【问题标题】:App crashes on button click with empty edittext应用程序在单击带有空编辑文本的按钮时崩溃
【发布时间】:2017-12-01 03:56:13
【问题描述】:

我正在开发一个有一些数学问题的应用程序。 我在 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!");

    }
}

【问题讨论】:

  • 你应该在onCreate()方法中实例化视图而不是onClick()

标签: android button crash


【解决方案1】:

为了避免带有 parseInt() 的 NumberFormatException,请确保之前(不是在 onClick() 中)输入了一个值。

【讨论】:

    【解决方案2】:

    这里出了很多问题,但标题是您做事的顺序错误。您应该在 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);
                }
            }
        });
    }
    

    【讨论】:

    • 我的荣幸,编码愉快!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2017-03-15
    相关资源
    最近更新 更多