2010-10-11 29 views
18

Mam następujący kod XML dla mojego CheckBoxPreference:Android CheckBoxPreference Wartość domyślna

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

Ale kiedy pobierać preferencje w kodzie wartość jest false.

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

Moi autoStart zmienne powraca false.

Czy istnieje ku temu szczególny powód? Czy brakuje mi kroku, aby ustawić domyślną wartość na true?

Odpowiedz

35

Musisz ustawić domyślne pierwsze: metody

@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

Uwaga: ja umieść to w klasie, która rozszerza aplikację, a NIE działalność – MobileMon

+0

@MobileMon dobry krzyk! Właśnie zamierzałem umieścić go w PreferenceFragment. Dlaczego jednak? :) –

+1

Do czego służy domyślna wartość w xml, jeśli muszę programowo go zakodować? –

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