我的应用程序中有非常简单的首选项页面:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="autoCheck"
android:title="@string/autoCheckLbl"
android:defaultValue="true"
android:summary="@string/autoCheckDesc"
/>
</PreferenceScreen>
此设置文件由自定义 PreferenceActivity 管理,它只执行以下操作:
public class SettingsActivity extends PreferenceActivity
{
protected void onCreate(Bundle savedState)
{
super.onCreate(savedState);
addPreferencesFromResource(R.xml.settings);
}
}
问题是,当用户进行一些更改时,即选中/取消选中该设置,似乎该更改没有保存。例如,当用户导航回主要活动时,我正在其中检索autoCheck设置的当前值,这样:
boolean autoCheck = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("autoCheck", true);
...检索到的值不是用户先前设置的值。只有在重新启动 Android 模拟器后,才能正确设置新值。