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

使用 junkdog 的方法,但对于它的价值,这是 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 回答