gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:35:08 26 4
gpt4 key购买 nike

我能够使用共享首选项存储复选框的值,但无法保存其要执行的操作。我需要的操作是在选中复选框时应显示按钮,如果复选框未选中,按钮不应显示(隐藏/显示按钮在不同的 Activity 中完成)。所以我所做的是在 if/else 条件下传递值 isCheckedValue = isChecked;

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

如果 chkbox 被选中,该值将使用 onBubbleClick 中的 Intent 传递,使用 boolean 值传递数据 in.putExtra("yourBoolName", isCheckedValue ); 你可以在下面是一堆代码

    private void addNewBubble() {
BubbleLayout bubbleView = (BubbleLayout)LayoutInflater.from(MainActivity.this).inflate(R.layout.bubble_layout, null);
bubbleView.setOnBubbleRemoveListener(new BubbleLayout.OnBubbleRemoveListener() {
@Override
public void onBubbleRemoved(BubbleLayout bubble) {
finish();
System.exit(0);
}
});
bubbleView.setOnBubbleClickListener(new BubbleLayout.OnBubbleClickListener() {

@Override
public void onBubbleClick(BubbleLayout bubble) {
Intent in = new Intent(MainActivity.this, PopUpWindow.class);
in.putExtra("yourBoolName", isCheckedValue );
startActivity(in);

}
});
bubbleView.setShouldStickToWall(true);
bubblesManager.addBubble(bubbleView, 60, 20);
}

工作原理:一开始,只有单击复选框后,按钮才会显示,选中复选框后,按钮就会显示,即使取消选中复选框,按钮也不会隐藏。
它的工作原理如果选中该复选框,则该按钮应显示;如果未选中该复选框,该按钮应隐藏。

最佳答案

在 if-else block 中,您实际上并没有在 false 条件下更新 isCheckedValue 的值。所以,这需要解决。我还对你的代码进行了一些重构。请尝试以下操作:

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

关于java - 共享首选项保存复选框操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com