我有CheckBoxPreference
的以下XML代码:
<CheckBoxPreference
android:key="pref_boot_startup"
android:title="Auto start"
android:defaultValue="true" />
但是当我在代码中检索首选项时,值为false
。
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true);
我的autoStart
变量返回false
。
有具体原因吗?我错过了将默认值设置为true
的步骤吗?
答案 0 :(得分:35)
您必须先设置默认值:
@Override
protected void onCreate()
{
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true);
{...}
}
答案 1 :(得分:13)
使用junkdog的方法,但是对于它的价值,这是Android中的一个错误:
答案 2 :(得分:3)
// These two lines are working around an android bug:
// http://code.google.com/p/android/issues/detail?id=6641
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.edit().putBoolean(REFRESH_COUNTER_PREF, prefs.getBoolean(REFRESH_COUNTER_PREF, true)).commit();