所有-我有一个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”语句来捕捉在格式化之前是否只留下美元符号但没有运气。有人知道解决这个问题的方法吗?谢谢。