我有一個基本上是調查活動的應用程序。有些問題要求在繼續之前填寫一組條件或另一組條件。當用戶按下是時,他們會得到一組 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
提交
取消