0

アプリに非常にシンプルな設定ページがあります。

<?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 エミュレーターが再起動された後にのみ、新しい値が正しく設定されます。

4

0 に答える 0