在主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作为第二个参数。 将其更改为所需的默认值。