共享首选项保存复选框操作

时间:2016-08-19 17:13:30

标签: java android android-studio checkbox sharedpreferences

我能够使用共享首选项存储复选框的值,但是我无法保存操作它的意图。我需要的操作是当选中复选框时,应该显示一个按钮,如果未选中复选框,则不应显示按钮(隐藏/显示按钮在不同的活动中完成)。所以我做的是在if / else条件下传递了值dataclean2 = dataclean1.drop(29).reset_index(level = 0, drop = True)

isCheckedValue = isChecked;

如果选中chkbox,则值将使用 final CheckBox checkBox = (CheckBox) findViewById(R.id.add_fb); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); final SharedPreferences.Editor editor = preferences.edit(); checkBox.setChecked(preferences.getBoolean("checked",false)); checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { isCheckedValue = isChecked; editor.putBoolean("checked", isChecked); editor.apply(); if(checkBox.isChecked()) { isCheckedValue = isChecked; editor.putBoolean("checked", true); editor.apply(); }else{ editor.putBoolean("checked", false); editor.apply(); } } }); 中的intent传递,使用布尔传递数据onBubbleClick,您可以在下面的代码中注意到它

in.putExtra("yourBoolName", isCheckedValue );

工作原理:一开始按钮不会显示,直到单击复选框,选中复选框后按钮才会显示,即使取消选中该复选框,也不会隐藏。
如何工作如果选中该复选框,则会显示该按钮,如果取消选中该复选框,则应隐藏按钮。

1 个答案:

答案 0 :(得分:1)

在您的if-else块中,您并未真正更新isCheckedValue条件中false的值。所以,这需要修复。我还重构了你的代码。请尝试以下方法:

final CheckBox checkBox = (CheckBox) findViewById(R.id.add_fb);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
final SharedPreferences.Editor editor = preferences.edit();

checkBox.setChecked(preferences.getBoolean("checked",false));

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        isCheckedValue = isChecked;
        editor.putBoolean("checked", isChecked);
        editor.apply();
    } 
});