2010-10-11 36 views
18

benim CheckBoxPreference için aşağıdaki XML kodu vardır:Android CheckBoxPreference Varsayılan Değer

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

Ama kodunda tercih aldığınızda değeri false olduğunu.

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

Benim autoStart değişken döner false.

Bunun özel bir nedeni var mı? Varsayılan değeri true olarak ayarlamak için bir adımı eksik miyim?

cevap

35

Önce varsayılan ayarlamak zorunda:

@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

Not: Ben Bu uygulamayı genişletir bir sınıfta koymak, bir aktivite değil – MobileMon

+0

@MobileMon iyi bağırıyor! PreferenceFragment'e koymak üzereydim. Neden olsa? :) –

+1

Program aracılığıyla kod yazmam gerekirse, xml'deki varsayılan değer hangi amaçla kullanılır? –

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