更改后的sharedPreferences putBoolean将不起作用

时间:2013-06-08 06:47:38

标签: java android preferences

当共享偏好中的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一样使用它

1 个答案:

答案 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?

相关问题