如何在Android中检查空字段的异常

时间:2016-04-13 12:54:52

标签: java android

我在我的应用中有这段代码

 Button buttonConvertMilesToKm = (Button) findViewById(R.id.buttonConvertMilesToKm);

        buttonConvertMilesToKm.setOnClickListener(new View.OnClickListener() {
            EditText textBoxMiles = (EditText)findViewById(R.id.editTextMiles);
            EditText textBoxKm = (EditText)findViewById(R.id.editTextKm);

            public void onClick(View v) {

                double vMiles = Double.valueOf(textBoxMiles.getText().toString());

                    double vKm = vMiles / 0.62317;

                    DecimalFormat formatVal = new DecimalFormat("##.##");
                    textBoxKm.setText(formatVal.format(vKm));
            }
        });

更新

在完成评论之后,我就像这样实施了

  buttonConvertMilesToKm.setOnClickListener(new View.OnClickListener() {
        EditText textBoxMiles = (EditText)findViewById(R.id.editTextMiles);
        EditText textBoxKm = (EditText)findViewById(R.id.editTextKm);

        public void onClick(View v) {

            Double vMiles = Double.valueOf(textBoxMiles.getText().toString());
            //boolean x = android.text.TextUtils.isDigitsOnly(CharSequence Double.valueOf(textBoxMiles.getText().toString()));
            //if(vMiles.isNaN()) {
            if(!TextUtils.isEmpty(textBoxMiles.getText().toString())){
                double vKm = vMiles / 0.62317;

                DecimalFormat formatVal = new DecimalFormat("##.##");
                textBoxKm.setText(formatVal.format(vKm));

            }else {
                Toast.makeText(getApplicationContext(), "You did not enter a number", Toast.LENGTH_SHORT).show();
                return;

            }

        }
    });

如果文本字段为空,仍然会崩溃 如果输入正确的值,它可以正常工作

我是Android的新手,任何人都可以帮助我

谢谢

2 个答案:

答案 0 :(得分:-1)

尝试将此添加到您的EditText:

android:inputType="numberDecimal"
在设置这样的文字之前,

也不要忘记检查它是否为空:

textBoxMiles.getText().toString().equals("")

如果条件如下:

if(textBoxMiles.getText().toString().equals("")) {
 //empty 
}else {
 //not empty do something
}

并更改此行:

Double vMiles = Double.valueOf(textBoxMiles.getText().toString());

为:

Double vMiles = Double.parseDouble(textBoxMiles.getText().toString());

答案 1 :(得分:-2)

public void onClick(View v) {
    String textMiles = textBoxMiles.getText().toString();
    if (!textMiles.trim().equals("")) {
        try {
            double vMiles = Double.parseDouble(textMiles);
            double vKm = vMiles / 0.62317;
            DecimalFormat formatVal = new DecimalFormat("##.##");
            textBoxKm.setText(formatVal.format(vKm));        
        } catch (NumberFormatException e) {
            // alternative action
        }
    } else {
        // alternative action
    }
}