2010-09-16 74 views
1

我有一个由XML定义的首选项页面 - 包括一些默认值。我使用PreferenceActivity来显示和处理这个页面。无论何时我使用此页面设置首选项,文件系统上的首选项文件都会正确更新 - 我可以通过adb查看。为什么我的首选项页面不显示当前值?

但是,每当我在更改某些设置后返回到设置页面时,就会显示默认设置。更糟糕的是,如果我在不更改任何设置的情况下按回来,则会将其全部恢复为默认设置。

有关我如何获得首选项以实际显示当前设置的任何想法?

我由此产生PreferenceActivityis:

@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

您可以展示您如何创建和使用PreferenceActivity? – 2010-09-16 18:56:52

+0

完成 - 参见上文! – 2010-09-16 20:49:14

回答

3

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