我制作了一个简单的 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/