使用onCheckedChanged

时间:2017-05-09 09:12:47

标签: 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中分配wigets的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. 如果在所有复选框的状态下单击任何复选框,则会选中所有复选框

  5. 我做了一些尝试,下面是那个

    @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事件是最好的答案,但我无法做到......

1 个答案:

答案 0 :(得分:1)

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;


            }
        }
    });