2010-10-11 10 views
18

Ich habe den folgenden XML-Code für meine CheckBoxPreference:Android CheckBoxPreference Standardwert

<CheckBoxPreference 
    android:key="pref_boot_startup" 
    android:title="Auto start" 
    android:defaultValue="true" /> 

Aber wenn ich den Vorzug im Code abrufen ist der Wert false.

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true); 

Meine autoStart Variable kehrt false.

Gibt es einen bestimmten Grund dafür? Fehle ich einen Schritt, um den Standardwert auf true festzulegen?

Antwort

35

Sie haben die Standardwerte setzen zuerst:

@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

Hinweis: I setzen Sie das in eine Klasse, die Anwendung, keine Aktivität erweitert – MobileMon

+0

@MobileMon guten Ruf! Ich wollte es gerade in ein PreferenceFragment schreiben. Warum allerdings? :) –

+1

Welchen Zweck erfüllt der Standardwert in der XML, wenn ich ihn programmgesteuert codieren muss? –

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