【发布时间】:2015-03-12 21:07:09
【问题描述】:
所以在我的 MainActivity 中,我在检查布尔值时使用 SharedPreferences。
public boolean uptadevalues(boolean updatedvalue) {
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
if (mPremiumVQuery) {
Log.d(TAG, "Called uptadevalues mPremiumVQuery");
editor.putBoolean(mPremiumVString, true);
editor.apply();
} else {
editor.putBoolean(mPremiumVString, false);
editor.apply();
}
Log.d(TAG, "Called uptadevalues ");
return updatedvalue;
}
我知道 mPremiumQuery 是真的,因为 Log.d(TAG, "Called uptadevalues mPremiumVQuery"); 出现在 logcat 上。所以这意味着 SharedPreference 应该是Writing 首选项。
在片段上:
public boolean getPremiumValues() {
Log.d(TAG, "getPremiumValues");
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
return sp.getBoolean(mPremiumVString, false);
}
然后点击按钮
case R.id.button5:
if (getPremiumValues()) {
** open activity **
} else {
** dialog ** }
它总是显示对话框,但它确实应该打开新活动。 我看不到我的错误在哪里!感谢您的帮助。
更新:
问题是我使用不同的方法来访问 SharedPreferences,正如@piotr.wittchen 所说。
有很多人说要从 commit();申请();我试过了,没有任何区别,建议使用 apply();通过谷歌,我一直坚持下去。
【问题讨论】:
-
@Ruben 您是否将其设置为一个活动并在另一个活动中调用它?或者他们都在同一个活动中?
-
相同的活动。首先在创建。第二个在 ViewPager 中的片段上。
标签: android android-fragments sharedpreferences