根据具有空值的 EditText 处理 TextView 的更改
Handle Change of TextView according to EditText with Empty value
我在名为“deviseValue”的 EditText 上使用 TextChangedListener
并对其进行操作以显示 sellValue
和 buyValue
中的其他值,这两个 TextView
s ,如下:
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() 是“”(空)。这就是你得到 NumberFormatException 的原因。
尝试检查 deviseValue.getText().toString(),然后再将其转换为双精度数。
例如:
String dDeviseText = etEmail.getText().toString();
Double dDeviseValue = Double.valueOf(dDeviseText.isEmpty() ? "1" : dDeviseText);
并且您应该防止为此编辑文本输入非数字字符。
我在名为“deviseValue”的 EditText 上使用 TextChangedListener
并对其进行操作以显示 sellValue
和 buyValue
中的其他值,这两个 TextView
s ,如下:
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() 是“”(空)。这就是你得到 NumberFormatException 的原因。
尝试检查 deviseValue.getText().toString(),然后再将其转换为双精度数。 例如:
String dDeviseText = etEmail.getText().toString();
Double dDeviseValue = Double.valueOf(dDeviseText.isEmpty() ? "1" : dDeviseText);
并且您应该防止为此编辑文本输入非数字字符。