我正在处理有一些数学问题的应用程序。 我在photoshop中制作了一张照片,在图像下方有一个editText和按钮。 一切都很好,但是当editText为空时单击按钮时,应用程序崩溃。 我尝试了其他问题的例子,但他们没有帮助我。
public class Start1Activity extends AppCompatActivity {
Button btn;
public void displayResult(String result) {
Toast.makeText(Start1Activity.this, result, Toast.LENGTH_SHORT).show();
}
public void guess(View view){
final EditText EditText2 = (EditText) findViewById(R.id.editText2);
final int guessNumber = Integer.parseInt(EditText2.getText().toString());
if (guessNumber == 3 ){
displayResult("That's right! Click once again for next level");
btn = (Button) findViewById(R.id.bt3);
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if(EditText2.getText().toString().isEmpty()){
displayResult("Please enter some number");
}
Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class);
startActivity(anythingintent);
}
});
}
else{
displayResult("Wrong. Try again!");
}
}
答案 0 :(得分:0)
这里出现了很多问题,但标题是你正在以错误的顺序做事。您应该在onClick中对EditText进行所有检查,否则应用程序可能会抛出NullPointerException。以下代码应该适合您。
public void guess(View view){
final EditText editTextField = (EditText) findViewById(R.id.editTextField);
btn = (Button) findViewById(R.id.bt3);
final int guessNumber = Integer.parseInt(editTextField.getText().toString());
btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if(editTextField.getText().toString().isEmpty()) {
displayResult("Please enter a number");
}
else if (!(guessNumber == 3)) {
displayResult("Wrong. Try again!");
}
else {
displayResult("That's right! Click once again for next level");
Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class);
startActivity(anythingintent);
}
}
});
}
答案 1 :(得分:0)
为了避免使用parseInt()的NumberFormatException,请确保先前(不在onClick()中)输入值。