Java简单数字游戏当EditText为空时应用程序崩溃

标签 java android

我制作了一个简单的 Android 应用程序,该应用程序创建一个 1 到 20 之间的数字,用户必须猜测它。 一切工作正常,除了一件事:当我让 EditText 为空时,当我按下按钮时应用程序会立即崩溃。我怎样才能防止这种情况发生?我尝试了一个 if-else 参数,将 EditText 输入的文本赋予全局创建的 editText 变量 editTextGuess ,但应用程序启动后立即崩溃。

我需要编写什么代码才能使应用程序不会因空文本字段而崩溃,而是创建一个 toast 并显示“哎呀,您的文本字段为空”?

package com.example.randomness;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.util.Random;

public class MainActivity extends AppCompatActivity {

    //Den EditText und den Integer für die zufällige Zahl global erstellen
    EditText editTextGuess;
    int RandomNumber;

    //Hier einen Void eröffnen, um die zufällige Zahl zu erstellen
    public void generateRandomNumber(){
        Random random = new Random();

        RandomNumber = random.nextInt(20) +1;
    }

    //Erstellen der OnClick Methode für den Button, View view ist wichtig!
    public void guess(View view){
        Log.i("Button clicked", "Worked!");

        int guessValue;
        guessValue = Integer.parseInt(editTextGuess.getText().toString());
        Log.i("Entered Value:", Integer.toString(guessValue));
        Log.i("The random number is:", Integer.toString(RandomNumber));


        String message;

        if(guessValue > RandomNumber){
            message = "Your guessed number is too high!";
        } else if(guessValue < RandomNumber){
            message = "Your guessed number is too low!";
        } else if(guessValue == RandomNumber){
            message = "You were right! Let's play again!";
            generateRandomNumber();
            Log.i("Info", "New random number created");
        } else {
            message = "Something went wrong...";
        }

        Toast.makeText(this, message, Toast.LENGTH_LONG).show();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editTextGuess = findViewById(R.id.editTextRaten);
        generateRandomNumber();

    }
}

最佳答案

在尝试使用 EditText 中的文本之前,请检查它是否包含任何文本。如果是,请阅读文本,否则显示 toast

String text = editTextGuess.getText().toString().trim();

if(text.length == 0) {
  // show toast
} else {
  // use text from  editTextGuess
}

关于Java简单数字游戏当EditText为空时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604878/

相关文章:

java - 如何使用 ProGuard 从类中删除 "TAG"字段?

android - 如何解决 android api 26 中的录制声音问题

java - 为什么我的 Android 代码中出现空指针错误?

java - 如何将此 jReddit 库/API 添加到我的 eclipse 项目中?

java -\\s+ 和\s+ 有什么区别

java apache poi 导入netbeans 6.9

java - 这个小程序在 Iced Tea JRE 中工作吗?

java - Vert.x - Verticle 和 Services 之间的差异

JAVA 变量作用域

android - 将 fragment 显示为对话框或常规 Activity