0

こんにちは、チェックボックスと設定リストの 2 つの設定を持つ Android アプリを作成しています。チェックボックスがチェック済みとしてマークされると、プリファレンスリストが有効になります。メソッドを使用して、チェックボックスの「チェック済み」ステータスを保存することができましたputBoolean()

getPreferenceManager().getSharedPreferences().edit().putBoolean(key, boolean);
getPreferenceManager().getSharedPreferences().edit().commit();

isEnabledしかし、値を保存して、離れて戻ったときにリセットされないようにするにはどうすればよいですか?

とにかく、putbooleanはどのプロパティにブール値を設定するかをどのように知っていますか?

@Override 
public void onPause() { 
    super.onPause(); 
    save(l.isEnabled());
} 

@Override 
public void onResume() { 
    super.onResume(); 
    l.setEnabled(load());
} 

private void save(final boolean b) { 

          //what to put instead of key in order to save the preference list ENABLED sate?? 
          getPreferenceManager().getSharedPreferences().edit().putBoolean(key, b);
    getPreferenceManager().getSharedPreferences().edit().commit();

}

private boolean load(String key) { 
    return getPreferenceManager().getSharedPreferences().getBoolean(key, false);

} 
4

2 に答える 2

2

isEnabled()はブール値を返すため、有効状態は「チェック済み」ステータスを保存したのと同じ方法で保存できます。

SharedPreferences.Editor prefEditor = PreferenceManager.getDefaultSharedPreferences(this).edit();
prefEditor.putBoolean("prefs.preferenceList.enabled", preferenceList.isEnabled());  
prefEditor.commit();

次に、 setEnabled()を使用してチェックボックスの有効な状態を設定する状態を返します。onCreate中に、次のようなことができます。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
preferenceList.setEnabled(prefs.getBoolean("prefs.preferenceList.enabled", false);
于 2012-10-17T13:21:35.363 に答える
0
getPreferenceManager().getSharedPreferences().edit().putBoolean(key, b);
getPreferenceManager().getSharedPreferences().edit().commit();

edit を呼び出すたびに、preferenceEditor の新しいインスタンスが作成されるため、edit() を 2 回呼び出すべきではありません。したがって、あなたの putBoolean は決してコミットされません。

これは

SharedPreferences.Editor prefs = getPreferenceManager()
                                 .getSharedPreferences()
                                 .edit();
prefs.putBoolean(key,b);
prefs.commit();
于 2012-10-18T16:07:13.423 に答える