当共享偏好中的chebkox改变状态时,我有一个if循环。但是,当状态发生变化时,我无法设置putBoolean("blabla", false);
。
例如:用户点击复选框,CB会被选中,如果显示uncheck it
但不会取消选中。
我的代码:
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if(key.equals("cbSaveUsername")) {
SharedPreferences.Editor SFEdit2 = sharedPreferences.edit();
SFEdit2.putBoolean("cbSaveUsername", false);
SFEdit2.commit();
}
}
谁能告诉我我的错误?
编辑:看起来它以编程方式工作但是勾号仍然在框中:o哪里可能是错误?我像Gunaseelan postet一样使用它
答案 0 :(得分:1)
尝试使用onPause()
和onResume()
方法。
@Override
protected void onResume() {
super.onResume();
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onPause() {
super.onPause();
// Unregister the listener whenever a key changes
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
}
有关详细信息onSharedPreferenceChanged not fired if change occurs in separate activity?