问题描述
我在名为“ deviseValue”的EditText上使用TextChangedListener
,并对其进行操作以显示sellValue
和buyValue
中其他两个TextView
的值,如下所示:如下:
deviseValue.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s,int start,int count,int after) {}
@Override
public void onTextChanged(CharSequence s,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转换为double值。但是,当您清除edittext时,deviseValue.getText()。toString()为“”(空)。这就是为什么出现NumberFormatException的原因。
在将deviseValue.getText()。toString()转换为double之前,请尝试检查它。 例如:
String dDeviseText = etEmail.getText().toString();
Double dDeviseValue = Double.valueOf(dDeviseText.isEmpty() ? "1" : dDeviseText);
并且您应该避免为此编辑文本输入非数字字符。