当布尔方法返回False时,它仍然移至下一个Activity

时间:2018-07-16 01:22:00

标签: android android-studio

我有一个布尔方法,当它返回false时,我希望它保持相同的活动(以便用户可以填写空白字段)。如果布尔值为true,则应移至下一个活动。

我还是编码新手。

        public boolean onOptionsItemSelected(MenuItem item) {
               switch (item.getItemId()) {
                  case R.id.calculate:
              switch (spinnerAPos) {

                    case 1:

                        Y = x * b;
                        break;
                   case 2:
                          etc...
                     break
                          }

         if(checkAnswer(y));
                Intent intent = new Intent(this, NextActivity.class);
                intent.putExtra("A", Math.round(Y * 100.0) / 100.0);
                startActivity(intent);
               }
            return true ;
            default:
            return super.onOptionsItemSelected(item);
    }
}

    public boolean checkAnswer(double y){

    boolean pass = false;
    if (y == 0 ){
     editText.setError("add a number greater than Zero");
      }
  pass = false;
    }else{
          pass =true;
        }
          return pass;
        }
         }

1 个答案:

答案 0 :(得分:2)

问题是您实际上没有在评估if块。

将您的if块更改为:

if(checkAnswer(y)){
    Intent intent = new Intent(this, NextActivity.class);
    intent.putExtra("A", Math.round(Y * 100.0) / 100.0);
    startActivity(intent);
}

您的代码中有if(checkAnswer(y));,导致代码仅转到下一行代码。直接到Intent


通常,您的代码存在一些问题。也许仅仅是因为您将代码简化为一个示例,而是一个示例:break块“情况2:”中switch之后没有分号(“;”)。 / p>


编辑: 实际上,我很惊讶您的代码被编译!您的checkAnswer()方法具有非法的if块构造:您在pass = false;if部分之间有else。请张贴将在提问时编译的代码。