我正在尝试将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));
}发布于 2015-11-15 14:46:10
首先,加上
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();
} 以防止应用程序崩溃。
发布于 2015-11-15 15:00:23
我认为您的编辑文本值是空的。首先检查它是否为空,然后进行计算。使用尝试捕捉来找出确切的问题。试试这个,link
https://stackoverflow.com/questions/33720900
复制相似问题