我的应用程序中有一个非常简单的首选项页面:
<?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模拟器后,才能正确设置新值。