当文本字段为空时,带有TextChangedListener的应用程序崩溃

时间:2015-08-11 07:43:12

标签: android

我试图在EditText中显示方程式结果。

它可以正常工作,直到我清除文本字段中的值,即应用程序关闭时的值

mDrq = (EditText) findViewById(R.id.drq); 
mEDitTxt = (EditText) findViewById(R.id.EditText01); 

mDrq.addTextChangedListener(new TextWatcher(){

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                    int arg2, int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
                // TODO Auto-generated method stub
                String Ltrs=mDrq.getText().toString();
                Double LTR=Double.parseDouble(Ltrs);

                if(Integer.parseInt(Ltrs)>10){

                    Double drq=((0.20)*(LTR));
                    mEDitTxt.setText(""+drq+"");
                }

            }


         });

1 个答案:

答案 0 :(得分:0)

最可能的问题是

Double LTR=Double.parseDouble(Ltrs);

抛出NumberFormatException,因为Ltrs(应该是小写的btw - 大写是用于类)将无法解析为double。

修复如下:

@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

    String text = mDrq.getText().toString();
    try {
        Double dbl = Double.parseDouble(text);
        if (Integer.parseInt(txt) > 10) {
             Double drq = ((0.20)*(dbl));
             mEDitTxt.setText(String.valueOf(drq));
        }
    } catch (NumberFormatException nfe) {
        Log.e(TAG, "Couldnt parse textfield", nfe);
    }

}

请注意String.valueOf等其他修正