我有一个由XML定义的首选项页面 - 包括一些默认值。我使用PreferenceActivity来显示和处理此页面。每当我使用此页面设置首选项时,文件系统上的首选项文件都会正确更新 - 我可以通过adb看到这一点。
但是,每当我在更改了某些设置后返回设置页面时,都会显示默认设置。更糟糕的是,如果我在不改变任何设置的情况下按下它,它会将所有设置恢复为默认设置。
关于如何让prefs实际显示当前设置的任何想法?
我的PreferenceActivity就是这样创造的:
@Override
protected void onCreate(Bundle savedInstanceState) {
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener(this);
setDefaults(this);
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
}
XML看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:id="@+id/numberOfYearsList"
android:key="numberOfYears"
android:title="Number of Years to Read the Bible"
android:summary="How many years would you like to take to read through the reading plan?"
android:entries="@array/numberOfYears"
android:entryValues="@array/numberOfYears"
android:dialogTitle="How Many Years?"
android:defaultValue="1"
/>
<CheckBoxPreference android:key="ignoreDates"
android:id="@+id/ignoreDatesCheckbox"
android:title="Ignore Dates"
android:summary="Would you like to use the dates in the plan?"
android:defaultValue="false"
/>
</PreferenceScreen>
答案 0 :(得分:3)
没关系 - 我犯了一个错误。从上面可以看出,在创建Preference Activity时,我正在调用一个方法,将所有prefs设置为默认值... Duh!