1

当 sharedpreferences 中的 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 一样使用它

4

1 回答 1

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);
}

如果更改发生在单独的活动中,有关SharedPreferenceChanged的​​更多详细信息不会被触发?

于 2013-06-08T07:03:06.163 回答