我的问题是,当我启动应用程序并且用户没有打开我的 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>
我的主要 Activity 的 fragment (onCreate
方法):
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String pref1 = appPreferences.getString("pref1", null);
结果我得到一个 null
值。
最佳答案
在您的主 Activity
的 onCreate()
中,只需调用 the PreferenceManager.setDefaultValues()
method .
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
这将读取您的 preference.xml
文件并设置其中定义的默认值。将 readAgain
参数设置为 false
意味着这只会在过去从未调用过此方法的情况下设置默认值,因此您无需担心覆盖用户的每次创建 Activity
时的设置。
关于android - 在主 Activity 中从 XML 初始化首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874276/