java - 使用 onCheckedChanged 的​​多个复选框事件

标签 java android checkbox

我的登录复选框有问题

首先,我将创建 3 个复选框并为每个复选框创建更改监听器

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {

private CheckBox main_id_saver;
private CheckBox main_pw_saver;
private CheckBox main_auto_login;

并在onCreate中为每个wiget分配ID(跳过xml文件)

main_id_saver = (CheckBox) findViewById(R.id.main_id_saver);
main_pw_saver = (CheckBox) findViewById(R.id.main_pw_saver);
main_auto_login = (CheckBox) findViewById(R.id.main_auto_login);

main_id_saver.setOnCheckedChangeListener(this);
main_pw_saver.setOnCheckedChangeListener(this);
main_auto_login.setOnCheckedChangeListener(this);

我想为满足以下条件的复选框设置点击事件

  1. 如果选中 ID、PW 复选框,则会自动选中自动登录复选框

  2. 无法仅勾选 PW 复选框

  3. 如果选中自动登录,则自动检查ID、PW

  4. 如果在所有复选框都已选中的状态下单击任何复选框,则所有复选框都将取消选中

我做了一些尝试,下面是

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (main_auto_login.isChecked()){
        if(!main_id_saver.isChecked() || !main_pw_saver.isChecked()) {
            main_id_saver.setChecked(true);
            main_pw_saver.setChecked(true);
            return;
        } else if (main_id_saver.isChecked()&&main_pw_saver.isChecked()&&main_auto_login.isChecked()){
            main_auto_login.setChecked(false);
            main_id_saver.setChecked(false);
            main_pw_saver.setChecked(false);
            return;
        }
    } else if(main_pw_saver.isChecked()){
        if(main_id_saver.isChecked()){
            main_auto_login.setChecked(true);
            return;
        } else if(!main_id_saver.isChecked()){
            Toast.makeText(MainActivity.this, "CANNOT REMEMBER PASSWORD BUT FOR ID",Toast.LENGTH_SHORT).show();
            main_pw_saver.setChecked(false);
            return;
        }
    }
    return;
}

但是它并没有像我想象的那样工作

解决这个问题的最佳代码是什么?

以我傲慢的观点,单独制作 onChangedLinster 事件是最好的答案,但我做不到......

最佳答案

chk.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch (buttonView.getId()){
                case R.id.checkbox1:
                    if(isChecked)
                        //Do something
                    else
                        //Do something
                    break;
                case R.id.checkBox2:
                    if(isChecked)
                    //Do something
                    else
                    //Do something
                    break;


            }
        }
    });

关于java - 使用 onCheckedChanged 的​​多个复选框事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865744/

相关文章:

java - 通过忽略某些元素来提取一组数字的第一次和最后一次出现

java - Swing:实现完全可扩展组件的好方法是什么?

java - 我无法从 AsyncTask 获得结果?

javascript - 验证是否选中 1 到 3 个复选框但具有不同的 id

c# - CheckBox 的删除线字体样式

java - 在 Java 中降低层次结构和平等

java - 添加自定义字体 JFreeChart

java - 由于某种原因确定字符串是否为空需要 2 个参数

android - 多个立体声音轨

php - 如何删除带有复选框的查询