根据具有Empty值的EditText处理TextView的更改



我正在名为"的EditText上使用TextChangedListener;deviseValue";并对其进行运算,以显示作为两个TextViewsellValuebuyValue中的其他值,如下所示:

deviseValue.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
Double dDeviseValue = Double.valueOf(deviseValue.getText().toString());
Double sellResult = dDeviseValue*dSellValue;
Double buyResult = dDeviseValue*dBuyValue;
sellValue.setText(sellResult.toString());
buyValue.setText(buyResult.toString());
}
});

一切都很好,但是,当我删除deviseValue的所有值时(即:EMPTY(。。我的应用程序崩溃!!

如何处理这种情况,当用户删除所有值时,deviseValue会自动变为>1.

应用程序崩溃,因为您试图将字符串值从edittext转换为双精度值。但是当您清除edittext deviseValue.getText((时,toString((是"quot;(空(。这就是你得到NumberFormatException的原因。

在将其转换为双精度之前,请尝试检查deviseValue.getText((.toString((。例如:

String dDeviseText = etEmail.getText().toString();
Double dDeviseValue = Double.valueOf(dDeviseText.isEmpty() ? "1" : dDeviseText);

并且您应该防止输入此编辑文本的非数字字符。

最新更新