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));
}

我认为您的编辑文本值为空。首先检查它是否为空,然后进行计算。使用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();
} 

以防止应用程序崩溃。

相关内容

  • 没有找到相关文章

最新更新