Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android CheckBoxPreference Default Value

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?

like image 960
Donal Rafferty Avatar asked Oct 11 '10 15:10

Donal Rafferty


3 Answers

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);

     {...}
    }
like image 91
junkdog Avatar answered Nov 15 '22 05:11

junkdog


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

like image 36
joemccann Avatar answered Nov 15 '22 05:11

joemccann


    // 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();
like image 3
walkarounder Avatar answered Nov 15 '22 05:11

walkarounder