为什么我的首选项页面没有显示当前值?

时间:2010-09-16 17:37:50

标签: android

我有一个由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>

1 个答案:

答案 0 :(得分:3)

没关系 - 我犯了一个错误。从上面可以看出,在创建Preference Activity时,我正在调用一个方法,将所有prefs设置为默认值... Duh!