如何取消选中 Android 复选框

12

我在我的安卓应用中有两个单选按钮和5个复选框,还有一个保存按钮。当用户点击保存按钮时,我需要取消用户勾选的复选框。我已经尝试了以下代码,但它没有起作用。

if (chkOthers.isChecked()) 
    chkOthers.setChecked(false);
    chkOthers.setSelected(false);
}

1
那段代码片段的上下文是什么?它太短了,没有什么用处。 - Tim
1
请执行以下操作: if(chkOthers.isChecked()) { chkOthers.performClick(); }这将对复选框执行正常的点击操作,也会执行onClickListner(),因此请明智使用。 - Hardik4560
4个回答

18

只需在按钮的onClick事件中使用chk1.toggle()来取消选中的复选框。

public class TestCheckBoxActivity extends Activity {
  /** Called when the activity is first created. */
     CheckBox chk1, chk2;

        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        chk1 = (CheckBox)findViewById(R.id.checkBox1);
        chk2 = (CheckBox)findViewById(R.id.checkBox2);

        Button btn = (Button)findViewById(R.id.button1);

        btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if(chk1.isChecked()){
                chk1.toggle();
            }

            if(chk2.isChecked()){
                chk2.toggle();
            }

        }
    });
       }
}

10

如果您想使用复选框,可以在两个复选框上设置onItemClickListener,并需要在onItemClick()方法中取消选择其他复选框。示例如下:

CheckBox cb1,cb2;
//Considering you can initialize the above variables
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener{
    onCheckedChanged (CompoundButton view, boolean isChecked){
        cb2.setChecked(false);
    }
});
cb2.setOnCheckedChangeListener(new OnCheckedChangeListener{
    onCheckedChanged (CompoundButton view, boolean isChecked){
        cb1.setChecked(false);
    }
});

我建议您使用单选按钮实现此行为,因为这种功能从一开始就内置在其中。


0
Button b = findViewById(R.id.{yourButtonID});
b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        chk1.setChecked(false);
        chk2.setChecked(false);
        chk3.setChecked(false);
        chk4.setChecked(false);
        chk5.setChecked(false);
    }
});

0
   holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
               if(holder.checkBox.isChecked()) {
                   holder.checkBox.setChecked(false);
               }else {
                   holder.checkBox.setChecked(true);
               }
            }
        });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接