son*_*876 13 android android-layout
我正在为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
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试清除EditView字段时,我的应用程序将崩溃.此外,退格键不再起作用.
jam*_*mes 20
问题是,你TextWatcher认为你是"清算"的文本,因此请求将关闭其回调方法(afterTextChanged,beforeTextChanged等).
我所做的就是简单地删除TextWatcher,清除文本,并添加TextWatcher回到EditText.这样,没有什么能听我的EditText改变.
你可能不得不TextWatcher像以前那样坚持一个实例而不是内联它.这样你每次想要清除时都不必创建一个EditText
loanText.removeTextChangedListener(yourTextWatcherObject);loanText.setText("");loanText.addTextChangedListener(yourTextWatcherObject);| 归档时间: |
|
| 查看次数: |
23618 次 |
| 最近记录: |