我有一个基本上是调查活动的应用程序。有些问题要求在继续之前填写一组条件或另一组条件。当用户按下是时,他们会得到一组 EditText 字段,如果他们按下否,他们会得到另一组。任何一种选择都会启用相同的继续按钮,但我需要检查是否只填写了两组中的一组,然后再继续下一个活动。 bContinue.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (myYesSection.isShown() && valueCombined.getText().toString().isEmpty()){ Toast.makeText(getApplicationContext(), "Please enter the combined score.", Toast.LENGTH_LONG).show(); } if (myNoSection.isShown() && valueOne.getText().toString().isEmpty() || valueTwo.getText().toString().isEmpty() || valueThree.getText().toString().isEmpty()){ Toast.makeText(getApplicationContext(), "Please fill out all fields.", Toast.LENGTH_LONG).show(); } else{ Intent toNextActivity = new Intent(getApplicationContext(), QuestionThree.class); startActivity(toNextActivity); } } });在操作中,如果valueCombined被填写,toast 会出现“请填写所有字段”。并且用户不会去下一个活动。如果valueCombined填写了,我不需要填写其他字段。填写valueOne、valueTwo和valueThree允许打开下一个活动,但要敬酒“请输入综合分数”。我必须更改什么以便按下按钮只需要两个条件之一才能继续?更新工作代码感谢@Andreas 的课程。这会准确检查我需要什么,并且如果显示错误的条件集,则不会弹出错误的吐司: bContinue.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int count = 0; if (combinedValue.getText().toString().isEmpty()){ if (myYesSection.isShown()) { Toast.makeText(getApplicationContext(), "Please enter combined score.", Toast.LENGTH_LONG).show(); } count++; } if (valueOne.getText().toString().isEmpty() || valueTwo.getText().toString().isEmpty() || valueThree.getText().toString().isEmpty()){ if (myNoSection.isShown()) { Toast.makeText(getApplicationContext(), "Please fill out all fields.", Toast.LENGTH_LONG).show(); } count++; }
1 回答

潇湘沐
TA贡献1816条经验 获得超6个赞
如果您有例如 3 个条件,并且您只想在其中 1 个为真时才做某事,请计算真条件的数量:
int count = 0;
if (condition1)
count++;
if (condition2)
count++;
if (condition3)
count++;
if (count == 1) {
// Yay!
}
或者使用三元运算符来缩短它:
if (1 == (condition1 ? 1 : 0) +
(condition2 ? 1 : 0) +
(condition3 ? 1 : 0)) {
// Yay!
}
如果您只有 2 个条件要检查,请使用异或运算符:
if (condition1 ^ condition2) {
// Yay!
}
JLS 15.22.2。布尔逻辑运算符&, ^, 和|将运算符定义为:
结果值是true操作数值是否不同;否则,结果为false。
添加回答
举报
0/150
提交
取消