【发布时间】:2013-11-27 05:26:33
【问题描述】:
在我的一个观点中,用户做出了选择。我想将该选择存储在一个变量中,我可以在所有视图中使用它,以便它可以用于进一步的数据库查询,例如“bookId”。
如何使“bookId”成为设置在一个视图上并在需要时可以跨其他视图访问的全局变量?
----- 编辑:我根据 cmets 和答案尝试做的事情 -----
在存储 SharedPreference 的主要活动中,我在 onCreate 之前有这个:
public static final String PREFS_NAME = "myPrefs";
SharedPreferences settings;
Integer bookId;
在我的 onCreate 中我已经这样做了:
settings = getSharedPreferences(PREFS_NAME, 0);
bookId = settings.getInt("bookId", 0);
按下按钮后,我将存储一个自定义属性并尝试在 SharedPreference 中设置 bookId:
SharedPreferences.Editor editor = settings.edit();
editor.putInt("bookId",bookKey);
editor.commit();
在另一个视图中,我尝试从 SharedPreference 中获取 bookId,出于测试目的,我尝试将存储的值设置为 textView,以确保它正确存储和传递。
在第二个视图的 onCreate 之前:
public static final String PREFS_NAME = "myPrefs";
SharedPreferences settings;
在onCreate里面:
settings = getSharedPreferences(PREFS_NAME, 0);
Integer bookId = settings.getInt("bookId", (Integer) null);
tempBookTextView = (TextView) findViewById(R.id.tempBookTextView);
tempBookTextView.setText(bookId);
我有两个问题,到目前为止,这看起来如何?我使用时应用程序崩溃的任何想法
Integer bookId = settings.getInt("bookId", (Integer) null);
【问题讨论】:
-
考虑使用 SharedPreference?我在最近的应用程序中使用了它。您可以在一个活动中设置键值对并在其他活动中获取该值。
-
什么是学习如何使用 SharedPreference 的好资源。 (我还在学习)。
-
Application 类比 SharedPreferences 更有用,如果该变量不时更改值。
-
@dcp3450 我最近添加了另一个问题的答案。检查此link。如果有帮助,请告诉我,我会将其发布为答案:-)