我有一个布尔方法,当它返回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;
}
}
答案 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
。请张贴将在提问时编译的代码。