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

问题描述 投票:-2回答:1

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

当用户按下yes时,他们会得到一组EditText字段,如果他们按下no,他们会得到一个不同的集合。任一选项都启用相同的继续按钮,但我需要检查两个集合中的一个是否已填写完毕,然后再继续下一个活动。

    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++;
            }
            if (count == 1){
                Intent toNextActivity = new Intent(getApplicationContext(), QuestionThree.class);
                startActivity(toNextActivity);
            }

        }
java android logic onclicklistener
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.