使用 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
所以我做了七个 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