在主Activity中初始化来自XML的首选参数
我的问题是,当我启动应用程序和用户没有打开我的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
值。
在主Activity
onCreate()
,调用PreferenceManager.setDefaultValues()
方法 。
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
这将读取您的preference.xml
文件并设置在那里定义的默认值。 将readAgain
参数设置为false
意味着如果过去从未调用过此方法,则只会设置默认值,因此您不必担心每次创buildActivity
都会覆盖用户的设置。
我会简短的。 🙂
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));
您对getString()
调用具有null
作为第二个参数。 将其更改为所需的默认值。