Android,验证一个空的EditText字段

时间:2013-11-25 03:14:40

标签: java android validation android-edittext is-empty

您好我有一个简单的温度转换器应用程序,只要字段为空,应用程序就会崩溃。我尝试了在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;
}

}

3 个答案:

答案 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

这可以帮助您验证表单字段,只需按照说明操作即可。 (: