在主Activity中初始化XML中的首选项

时间:2010-05-20 13:45:27

标签: android xml android-preferences

我的问题是,当我启动应用程序并且用户没有打开我的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值。

3 个答案:

答案 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作为第二个参数。将其更改为您想要的默认值。