我正试图在我的应用程序中实现TextWatcher,但当我在带有文本观察程序的编辑文本中输入一个数字时,会出现如下错误:
AndroidRuntime:at java.lang.StringToReal.invalidReal(StringToReal.java:63)
AndroidRuntime:at java.lang.StringToReal.parseDouble(StringToReal.java:267)
AndroidRuntime:at java.lang.Double.parseDouble(Double.java:301)
这是文本观察程序中的代码:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
myPercent = Double.parseDouble(s.toString());
myPrice = Double.parseDouble(priceShow.getText().toString());
finalPrice = myPrice*(myPercent/100);
priceAfterDiscount.setText(String.valueOf(finalPrice));
}
我认为您的编辑文本值为空。首先检查它是否为空,然后进行计算。使用try-catch查找确切的问题。试试这个,链接
首先,添加
android:inputType="number"
android:singleLine="true"
到您的myPercent
EditText
。
问题可能是您输入的是,
而不是.
作为十进制分隔符。
使用
try {
if (!s.toString().equals("") && !priceShow.getText().toString().equals("")) {
myPercent = Double.parseDouble(s.toString());
myPrice = Double.parseDouble(priceShow.getText().toString());
finalPrice = myPrice*(myPercent/100);
priceAfterDiscount.setText(String.valueOf(finalPrice));
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
以防止应用程序崩溃。