【问题标题】:How do I get my CheckBox to do something when it's checked?我如何让我的 CheckBox 在被选中时执行某些操作?
【发布时间】:2026-02-07 19:05:01
【问题描述】:

例如,我有 5 个复选框 (cb1 - cb5)。 cb1优于其他,这意味着只有其他4个都检查了才能检查。如果我检查 cb1,所有其他 4 都应该自动检查。这是我当前的 java 代码(此代码在 onCreate 方法中):

final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);
final CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3);
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( cb1.isChecked() )
        {
            cb2.isChecked();
            cb3.isChecked();
            cb4.isChecked();
            cb5.isChecked();
        }
    }
});

我是一个完整的初学者,所以代码可能完全错误,或者只是一个小错误,我看不到它。无论哪种方式,我都会感谢您的帮助。另外,如果我的方法太复杂,有更简单的方法,请告诉我。

【问题讨论】:

  • 如果您想选中该复选框,请使用 setSelected(true)。 (isChecked() 只检查复选框是否被选中,它不会选择/取消选择它)。
  • 您还应该为所有复选框设置OnCheckedChangeListener,而不仅仅是cb1。此外,您应该考虑只禁用 cb1,直到选中所有其他复选框。这将使用户更清楚发生了什么。
  • @Maroun 看起来他只是使用 java.awt 中的复选框,而不是 swing 中的复选框,所以命令是 setState(true) - 但请记住,这样设置状态不会生成复选框选中事件
  • @DavidChristo +1,100%。谢谢,我错过了 :) 将其作为答案发布。
  • 感谢您的回答,我接受的回答对我帮助最大,但每一个回答和评论都帮助我完成了工作,你们太棒了。

标签: java android eclipse checkbox checked


【解决方案1】:

为复选框监听器创建一个类

public class CheckBoxListener implements OnCheckedChangeListener {

    public CheckBoxListener() {

    }


    @Override
    public void onCheckedChanged(CompoundButton view, boolean isChecked) {
        switch(view.getId()) {
        case R.id.checkBox1: 
            //do something
        case R.id.checkBox2:

        case ...
        }

    }
}

然后将此侦听器设置为所有复选框:

final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1);
final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2);
final CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3);
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4);
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5);
cb1.setOnCheckedChangeListener(new CheckBoxListener());
cb2.setOnCheckedChangeListener(new CheckBoxListener());
cb3.setOnCheckedChangeListener(new CheckBoxListener());
cb4.setOnCheckedChangeListener(new CheckBoxListener());

【讨论】:

  • 我最终并没有完全这样做。我使用了 IF 循环,我没有为每个按钮设置监听器(只是大多数按钮),它工作得很好!谢谢你:)
最近更新 更多