仅在满足一个或另一个条件时继续

时间:2019-02-21 02:15:50

标签: java android logic onclicklistener

我有一个基本上是一项调查活动的应用程序。某些问题要求在继续之前先填写一组条件或另一组条件。

当用户按“是”时,将获得一组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 ,则吐司显示为“请填写所有字段。” ,并且用户不会进入下一个活动。如果 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++;
            }
            if (count == 1){
                Intent toNextActivity = new Intent(getApplicationContext(), QuestionThree.class);
                startActivity(toNextActivity);
            }

        }

1 个答案:

答案 0 :(得分:0)

如果有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个条件,请使用 Exclusive-OR 运算符:

if (condition1 ^ condition2) {
    // Yay!
}

JLS 15.22.2. Boolean Logical Operators &, ^, and |将运算符定义为:

  如果操作数值不同,则

结果值为true;否则,结果为false