问题
I have the following XML code for my CheckBoxPreference
:
<CheckBoxPreference
android:key="pref_boot_startup"
android:title="Auto start"
android:defaultValue="true" />
But when I retrieve the preference in code the value is false
.
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true);
My autoStart
variable returns false
.
Is there a specific reason for this? Am I missing a step to set the default value to true
?
回答1:
You have to set the defaults first:
@Override
protected void onCreate()
{
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true);
{...}
}
回答2:
Use junkdog's method, but for what it's worth, this is a bug in Android:
http://code.google.com/p/android/issues/detail?id=6641
回答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();
来源:https://stackoverflow.com/questions/3907830/android-checkboxpreference-default-value