[英]Android crash when edittext is empty and tap Button
出于某种我不知道的原因,当我按下 EditText 为空的按钮时,应用程序崩溃,但如果我输入一些数字,它会完美运行。 我不想添加“此字段已启用”之类的标志,我只想解决此问题。
package com.example.converfuel;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Ticket extends AppCompatActivity {
private EditText ED1, ED2;
private TextView TW;
private Button calcular;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ticket);
ED1 = (EditText) findViewById(R.id.Num1);
ED2 = (EditText) findViewById(R.id.Num2);
TW = (TextView) findViewById(R.id.DIVISION);
calcular = (Button) findViewById(R.id.calcular);
calcular.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float Num1 = Float.parseFloat(ED1.getText().toString());
float Num2 = Float.parseFloat(ED2.getText().toString());
float DIV = Num1/Num2;
TW.setText(DIV+"");
double val = DIV;
val = val*100;
val = Math.round(val);
val = val / 100;
mostrar(val);
}
private void mostrar(double DIV){
TW.setText(DIV + "" +" €");
}
});
}
}
您可能会收到NumberFormatException
在解析值之前检查
public static boolean isParsableToFloat(String value) {
try {
Float.parseFloat(value);
return true;
} catch(NumberFormatException e){
return false;
}
}
然后
String valueOfED1 = ED1.getText().toString();
String valueOfED2 = ED2.getText().toString();
if (isParsableToFloat(valueOfED1) && isParsableToFloat(valueOfED2)) {
float Num1 = Float.parseFloat(valueOfED2);
float Num2 = Float.parseFloat(valueOfED2);
//...
} else {
//...
}
它给出错误,因为您将值存储在 Num1 和 NUM2 变量中,并且您尝试执行DIV = Num1/Num2这个操作,它给出了错误。
if(ED1.getText().length()>0 && ED2.getText().length()>0)
{
// Your Code
}
else
{
Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.