我能够使用共享首选项存储复选框的值,但是我无法保存操作它的意图。我需要的操作是当选中复选框时,应该显示一个按钮,如果未选中复选框,则不应显示按钮(隐藏/显示按钮在不同的活动中完成)。所以我做的是在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 );
工作原理:一开始按钮不会显示,直到单击复选框,选中复选框后按钮才会显示,即使取消选中该复选框,也不会隐藏。
如何工作如果选中该复选框,则会显示该按钮,如果取消选中该复选框,则应隐藏按钮。
答案 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();
}
});