全部 - 我有edittext
格式化为货币,如下所示:
问题是当用户退格所以只有一个数字而不是美元符号($ 5)并且再次击退退格时,我的应用程序强制关闭。我查看了logcat,看到它是由我的textwatcher中的无效double($)引起的,当你查看我的代码时,它会很好地发现:
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”语句来捕获是否只有美元符号在它完成格式化之前就已经离开但是没有运气。有人知道这个问题的解决方法吗?谢谢。