Android 文本观察器
Android TextWatcher
我正在尝试在我的应用程序中实施 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));
}
首先,添加
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();
}
防止应用程序崩溃。
我认为您的编辑文本值为空。首先检查它是否为空,然后进行计算。
使用 try catch 找到确切的问题。
试试这个,
link
我正在尝试在我的应用程序中实施 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));
}
首先,添加
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();
}
防止应用程序崩溃。
我认为您的编辑文本值为空。首先检查它是否为空,然后进行计算。 使用 try catch 找到确切的问题。 试试这个, link