50

我的问题是当我启动应用程序并且用户没有打开我的PreferenceActivity所以当我检索它们时没有得到我的preference.xml 文件中定义的任何默认值。

首选项.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值。

4

3 回答 3

111

在你onCreate()主要Activity只是调用方法PreferenceManager.setDefaultValues()

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

这将读取您的preference.xml文件并设置在那里定义的默认值。将readAgain参数设置为false意味着仅在过去从未调用过此方法时才设置默认值,因此您不必担心每次Activity创建时都会覆盖用户的设置。

于 2010-05-20T15:39:22.423 回答
14

我会简短。:)

strings.xml(实际上我有prefs.xml专门用于偏好):

<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>

首选项.xml

android:key="@string/pref_mypref_key"
android:defaultValue="@string/pref_mypref_default"

我的活动.java

String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));
于 2010-05-20T15:10:37.573 回答
8

您的调用getString()null作为第二个参数。将其更改为您想要的默认值。

于 2010-05-20T14:09:36.903 回答