我正在尝试在用户开始输入EditText
时自动将小数位置放置两位。问题是我正在尝试在我正在使用的TextWatcher
上设置EditText
,因此当它更新字段中的文本时,它会再次递归调用该方法。我得到了一个无限循环。这是我尝试过的:
mTime.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
mTime.removeTextChangedListener(this);
if(mTime.getText().length() > 2){
double amount = Double.valueOf(mTime.getText().toString());
amount /= 100.0;
}
}
@Override
public void afterTextChanged(Editable editable) {
mTime.addTextChangedListener(this);
}
mTime是EditText
的名字。我的想法是,一旦我触发了onTextChanged
,我就会删除TextChangedListener
,更新EditText
,然后重新设置TextChangedListener
中的afterTextChanged
。不幸的是,这不起作用。任何想法或帮助将不胜感激。
这应该是一件容易的事。我想我只是错过了它
答案 0 :(得分:0)
你几乎可以在代码下面进行一些更改:
mTime.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
mTime.removeTextChangedListener(this);
if(mTime.getText().length() > 2){
double amount = Double.valueOf(mTime.getText().toString());
amount /= 100.0;
}
mTime.addTextChangedListener(this);
}