我的问题是,当我启动应用程序并且用户没有打开我的PreferenceActivity时候,当我检索它们时,不会获得我的preference.xml文件中定义的任何默认值.
preference.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="applicationPreference" android:title="@string/config"
>
<ListPreference
android:key="pref1"
android:defaultValue="default"
android:title="Title"
android:summary="Summary"
android:entries="@array/entry_names"
android:entryValues="@array/entry_values"
android:dialogTitle="@string/dialog_title"
/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
我的主要活动(onCreate方法)的片段:
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String pref1 = appPreferences.getString("pref1", null);
Run Code Online (Sandbox Code Playgroud)
结果我得到了一个null值.
在共享首选项中开始使用一些默认值通常很好.有没有一种从xml文件或属性文件初始化它们的好方法?寻找最好的方法来做到这一点.谢谢.
我有这样一个类似的问题此,让我根据提出的解决方案进行,并且加入该行代码的onCreate:
PreferenceManager.setDefaultValues(this, R.xml.settings, false);
不幸的是,问题仍然存在,如果用户没有更改设置,仍然是默认值(true)
mPreferences.getBoolean(String.valueOf(day_of_week), true)
用来代替XML中的默认值.
有人建议将getBoolean()的default-value参数更改为null,但此代码会崩溃应用程序:
mPreferences.getBoolean(String.valueOf(day_of_week), (Boolean) null)
Run Code Online (Sandbox Code Playgroud)
有什么建议?提前致谢!