我的问题是,当我启动应用程序并且用户没有打开我的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>
我的主要活动(onCreate
方法)的片段:
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String pref1 = appPreferences.getString("pref1", null);
结果我最终得到null
值。
答案 0 :(得分:107)
在主onCreate()
的{{1}}中,只需致电the PreferenceManager.setDefaultValues()
method。
Activity
这将读取您的PreferenceManager.setDefaultValues(this, R.xml.preference, false);
文件并设置其中定义的默认值。将preference.xml
参数设置为readAgain
意味着只有在过去从未调用此方法时才会设置默认值,因此您不必担心每次{{{{{{{{ 1}}已创建。
答案 1 :(得分:14)
我会简短的。 :)
strings.xml (实际上我专门针对偏好设置 prefs.xml ):
<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>
<强>的preferences.xml 强>:
android:key="@string/pref_mypref_key"
android:defaultValue="@string/pref_mypref_default"
<强> MyActivity.java 强>:
String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));
答案 2 :(得分:8)
您对getString()
的来电是null
作为第二个参数。将其更改为您想要的默认值。