【问题标题】:boolean SharedPreferences always loading default valuesboolean SharedPreferences 总是加载默认值
【发布时间】:2014-09-29 08:46:05
【问题描述】:

SharedPreferences 和布尔值有一个奇怪的问题。 我已经在我的 xml 中设置了这段代码:

xml:

 <CheckBoxPreference
             android:key="onlywifiupload"
             android:defaultValue="true"
             android:summary="@string/summary_onlywifiupload"
             android:title="@string/title_onlywifiupload" 
      />

我从 Java 代码调用:

 boolean onlywifiupload =  pref.getBoolean("onlywifiupload", true);

即使复选框被选中或未选中,在 onlywifiupload 中也始终为 true。 与设置相同:

 boolean onlywifiupload =  pref.getBoolean("onlywifiupload", false);

似乎总是加载默认值而不是检查值。

【问题讨论】:

标签: android boolean sharedpreferences


【解决方案1】:

似乎让它工作的唯一方法是:

    mPrefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
    onlywifiupload = mPrefs.getBoolean("onlywifiupload", true);

不知道为什么我需要从 PrefenceManager 对象调用 getDefaultSharedPreferences

在此之前,我是这样调用首选项的:

    pref = getSharedPreferences("AppPref", MODE_PRIVATE);

【讨论】:

  • 实际上这是有道理的,因为 PreferenceActivity/PreferenceFragment 使用默认的 SharedPreferences 文件。这就是为什么它不适用于您的自定义 SharedPrefs 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多