【问题标题】:Working with RadioButtons and Buttons in Android Studio using JAVA使用 JAVA 在 Android Studio 中使用 RadioButtons 和 Buttons
【发布时间】:2021-10-05 20:31:59
【问题描述】:

所以我做了七个RadioButtons。有两组。前三后四!如果两个组都被选中,我想启用“提交”按钮。但问题是即使我选中其中一个单选按钮,它也会启用该按钮。所以基本上它忽略了and(&&) 声明。这是我的代码:

public void onRadioButtonClicked(View view) {
    boolean checked = ((RadioButton) view).isChecked();
    boolean checkeds = ((RadioButton) view).isChecked();
    
    if(!thirty.isChecked() || !fourty.isChecked() || !fifty.isChecked() && !geo.isChecked() || !eng.isChecked() || !country.isChecked() || !movi.isChecked()){
        submit.setEnabled(true);
    }else{
        submit.setEnabled(false);
    }

    switch (view.getId()) {
        case R.id.thirty:
            if (checked) {
                scorelimit = 3;
                fourty.setChecked(false);
                fifty.setChecked(false);
            }break;
        case R.id.fourty:
            if (checked) {
                scorelimit = 4;
                thirty.setChecked(false);
                fifty.setChecked(false);
            }break;
        case R.id.fifty:
            if (checked) {
                scorelimit = 5;
                thirty.setChecked(false);
                fourty.setChecked(false);
            }break;
    }
    switch (view.getId()) {
        case R.id.geo:
            if (checkeds) {
                gamemode = 3;
                eng.setChecked(false);
                country.setChecked(false);
                movi.setChecked(false);
            }break;
        case R.id.eng:
            if (checkeds) {
                gamemode = 4;
                geo.setChecked(false);
                country.setChecked(false);
                movi.setChecked(false);
            }break;
        case R.id.country:
            if (checkeds) {
                gamemode = 5;
                geo.setChecked(false);
                eng.setChecked(false);
                movi.setChecked(false);
            }break;
        case R.id.movi:
            if (checkeds) {
                gamemode = 6;
                geo.setChecked(false);
                eng.setChecked(false);
                country.setChecked(false);
            }break;
    }
}

【问题讨论】:

    标签: java android radio-button logical-operators


    【解决方案1】:

    由于AND在OR之前执行,它基本上只需要fifty.isChecked()&&geo.isChecked()的AND和其余的OR与前一个AND的结果,你应该添加括号,如果我理解正确你应该启用提交如果一个数字组 {三十,四十,五十} 和类别组 {eng,geo,movi,国家} 之一被选中,所以为了实现这一点,我删除了放在每个前面的 NOT,它应该看起来像这样结束。

    if((thirty.isChecked() || fourty.isChecked() || fifty.isChecked()) && (geo.isChecked() || eng.isChecked() || country.isChecked() || movi.isChecked()))
    

    现在应该表示if((one of first group is checked) and (one of the second group is checked))then enable the submit button

    【讨论】:

    • 是的,已经这样做了,但还是不行!从逻辑上讲,我知道它应该可以工作,但事实并非如此。奇怪
    • 不,我的错!我忘了删除NOT!有用!!谢谢!!
    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 2020-05-02
    • 2016-08-13
    • 1970-01-01
    • 2016-06-16
    • 2020-05-24
    相关资源
    最近更新 更多