您好我有一个简单的温度转换器应用程序,只要字段为空,应用程序就会崩溃。我尝试了在S.O上找到的一些验证,但是它一直在崩溃,所以任何人都可以帮我验证并清空字段,它会像Toast一样对话说“字段不能为空”。谢谢。
公共类MainActivity扩展了Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText celsiusEdit = (EditText) findViewById(R.id.celsiusEdit);
final EditText farhEdit = (EditText) findViewById(R.id.farhEdit);
Button c2f, f2c;
c2f = (Button) findViewById(R.id.c2fButton);
f2c = (Button) findViewById(R.id.f2cButton);
c2f.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
double celsius = Double.valueOf(celsiusEdit.getText().toString());
if((double)celsiusEdit.getText().toString().trim().length() == 0){
celsiusEdit.setError("Cannot be empty");
}else{
double farh = (celsius -32) * 5/9;
farhEdit.setText(String.valueOf(farh));
}}
});
f2c.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
double farh = Double.valueOf(farhEdit.getText().toString());
double celsius = (farh * 9/5) + 32;
celsiusEdit.setText(String.valueOf(celsius));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:0)
你的if语句毫无意义,你应该这样做:
if(celsiusEdit.getText().toString().trim().length() == 0){
但是,如果将非数字放入该文本框中,则可能会遇到问题,因为
Double celsius = Double.valueOf(celsiusEdit.getText().toString());
会抛出一个NumberFormatException,所以你应该把它放在试试中。
答案 1 :(得分:0)
试试这个
if (celsiusEdit.getText().toString().matches("")) {
Toast.makeText(this, "Field cannot be empty", Toast.LENGTH_SHORT).show();
return;
}else{
double celsius = Double.valueOf(celsiusEdit.getText().toString());
double farh = (celsius -32) * 5/9;
farhEdit.setText(String.valueOf(farh));
}
答案 2 :(得分:0)
您可以在此处尝试导入此课程 Android Form Validation Class
这可以帮助您验证表单字段,只需按照说明操作即可。 (: