【发布时间】:2011-04-06 13:45:43
【问题描述】:
我正在向 EditText 字段添加一个侦听器,以便将数字实时格式化为货币。
loanText.addTextChangedListener(new TextWatcher() {
private String current = "";
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(!s.toString().equals(current)){
String cleanString = s.toString().replaceAll("[$,.]", "");
double parsed = Double.parseDouble(cleanString);
String formated = NumberFormat.getCurrencyInstance().format((parsed/100));
current = formated;
loanText.setText(formated);
loanText.setSelection(formated.length());
}
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
});
但是,当我尝试清除 EditView 字段时,我的应用程序会崩溃。此外,退格键不再起作用。
【问题讨论】:
-
你能发布 logcat 的输出吗?我很好奇你得到的错误。由于无限循环,它可能是
NumberFormatError或(不太可能?)ANR。 -
尝试删除当前字符串并使用 if(s.toString().length() != 0) {}