首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android TextWatcher

Android TextWatcher
EN

Stack Overflow用户
提问于 2015-11-15 14:38:13
回答 2查看 190关注 0票数 1

我正在尝试将TextWatcher实现到我的应用程序中,但是当我在编辑文本中输入一个包含文本观察器的数字时,它会给我带来如下错误:

代码语言:javascript
复制
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)

这是文本观察器内部的代码:

代码语言:javascript
复制
@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));
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-15 14:46:10

首先,加上

代码语言:javascript
复制
android:inputType="number"
android:singleLine="true"

敬你的myPercent EditText

问题可能是您输入的是,而不是.作为小数分隔符。

使用

代码语言:javascript
复制
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();
} 

以防止应用程序崩溃。

票数 0
EN

Stack Overflow用户

发布于 2015-11-15 15:00:23

我认为您的编辑文本值是空的。首先检查它是否为空,然后进行计算。使用尝试捕捉来找出确切的问题。试试这个,link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33720900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档