アプリに非常にシンプルな設定ページがあります。
<?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 エミュレーターが再起動された後にのみ、新しい値が正しく設定されます。