18

私は次のXMLコードを持っていますCheckBoxPreference

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

しかし、コードで設定を取得すると、値はになりますfalse

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

私のautoStart変数はを返しますfalse

これには特別な理由がありますか?デフォルト値を設定する手順がありtrueませんか?

4

3 に答える 3

35

最初にデフォルトを設定する必要があります。

    @Override
    protected void onCreate()
    {
        PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        boolean autoStart = sharedPreferences.getBoolean("pref_boot_startup", true);

     {...}
    }
于 2010-10-12T01:22:22.217 に答える
12

ジャンクドッグの方法を使用しますが、その価値については、これはAndroidのバグです。

http://code.google.com/p/android/issues/detail?id=6641

于 2010-12-06T12:18:36.410 に答える
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();
于 2012-01-13T12:15:31.717 に答える