Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android CheckBoxPreference默认值_Android_Default Value_Checkboxpreference - Fatal编程技术网

Android CheckBoxPreference默认值

Android CheckBoxPreference默认值,android,default-value,checkboxpreference,Android,Default Value,Checkboxpreference,我的CheckBoxPreference有以下XML代码: <CheckBoxPreference android:key="pref_boot_startup" android:title="Auto start" android:defaultValue="true" /> MyautoStart变量返回false sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this

我的
CheckBoxPreference
有以下XML代码:

<CheckBoxPreference
    android:key="pref_boot_startup"
    android:title="Auto start"
    android:defaultValue="true" />
My
autoStart
变量返回
false

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

有没有具体的原因?是否缺少将默认值设置为
true
的步骤?

您必须先设置默认值:

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

     {...}
    }

使用junkdog的方法,但值得一提的是,这是Android中的一个bug:


注意:我把它放在一个扩展应用程序的类中,而不是一个activity@MobileMon喊得好!我正要把它放进一个片段里。为什么呢?:)如果必须以编程方式对xml中的默认值进行编码,那么它有什么用途?
    // 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();