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