使用 JAVA 在 Android Studio 中使用单选按钮和按钮

Working with RadioButtons and Buttons in Android Studio using JAVA

所以我做了七个 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;
    }
}

由于 AND 在 OR 之前执行,它基本上只需要 fifty.isChecked()&&geo.isChecked() 的 AND 和其余的 OR 与前一个 AND 的结果,你应该添加括号,如果我理解正确你应该启用如果检查了数字组 {thirty, f40, fifty} 之一和类别组 {eng, geo, movi, country} 之一,则提交,因此为了实现这一点,我删除了放在每个组之前的 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