1

所有-我有一个edittext格式化为货币的格式,如下所示:

在此处输入图像描述

问题是当用户退格所以只有一个数字和美元符号 ($5) 并且再按一次退格时,我的应用程序强制关闭。我查看了 logcat,发现它是由我的 textwatcher 中的无效双精度 ($) 引起的,当您查看我的代码时,这很合理:

public void onTextChanged(CharSequence s, int start, int before, int count) {
    if (!s.toString().equals(current)) {
        editText$.removeTextChangedListener(this);

        String cleanString = s.toString().replaceAll("[$,]", "");

            double parsed = Double.parseDouble(cleanString);
            NumberFormat formatter = NumberFormat.getCurrencyInstance();
            formatter.setMaximumFractionDigits(0);
            String formatted = formatter.format(parsed);

            current = formatted;

            editText$.setText(formatted);
            editText$.setSelection(formatted.length());
            editText$.addTextChangedListener(this);         

我尝试在 textwatcher 中使用“if”语句来捕捉在格式化之前是否只留下美元符号但没有运气。有人知道解决这个问题的方法吗?谢谢。

4

0 回答 0