我正在名为"的EditText上使用TextChangedListener
;deviseValue";并对其进行运算,以显示作为两个TextView
的sellValue
和buyValue
中的其他值,如下所示:
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);
并且您应该防止输入此编辑文本的非数字字符。