首页 > 解决方案 > 在 onClickListener 中生成随机值时应用程序崩溃

问题描述

当我没有在 EditText 中输入任何内容然后我按下“猜测”按钮时,我的应用程序不断崩溃,我似乎无法找到我的代码的问题。

public void generateRandomNos(){
      Random rand = new Random();
      randomNumber = rand.nextInt(20)+1;
}

btnGuess.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int guessValue = Integer.parseInt(etNumber.getText().toString());
                String message;

                if(guessValue > randomNumber){
                    message = "Lower !";
                    etNumber.setText("");
                }
                else if (guessValue < randomNumber){
                    message = "Higher !";
                    etNumber.setText("");
                }
                else{
                    message = "You got it right. GG ";
                    etNumber.setText("");
                    generateRandomNos();
                }

                Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show();
            }
});

EditText当框中没有文本以及按下按钮时,应用程序不应崩溃。可能是什么问题呢?

标签: javaandroid

解决方案


正如您在问题中提到的那样,当您未在编辑文本中输入任何内容时会发生此错误。

所以首先,检查是否edit text为空,然后执行所需的操作

btnGuess.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


       if(!etNumber.getText.toString().equals("")) {           
         int guessValue =  Integer.parseInt(etNumber.getText().toString());

                String message;

                if(guessValue > randomNumber){
                    message = "Lower !";
                    etNumber.setText("");
                }
                else if (guessValue < randomNumber){
                    message = "Higher !";
                    etNumber.setText("");
                }
                else{
                    message = "You got it right. GG ";
                    etNumber.setText("");
                    generateRandomNos();
                }


        Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show();
            }
         } else {
           Toast.makeText(MainActivity.this,"EditText Is empty",Toast.LENGTH_SHORT).show();
         }
   });

注意:并确保您使用android:inputType="number"属性来编辑文本,以便您只能获取数字作为输入


推荐阅读