Java Android EditText应用程序在调用clear inside TextWatcher时冻结
我的应用程序在调用clear onTextChanged TextWatcher时冻结 下面是我的代码Java Android EditText应用程序在调用clear inside TextWatcher时冻结,java,android,android-edittext,freeze,android-textinputedittext,Java,Android,Android Edittext,Freeze,Android Textinputedittext,我的应用程序在调用clear onTextChanged TextWatcher时冻结 下面是我的代码 materialEditText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Ov
materialEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().equals("$")){
materialEditText.getText().clear();
}
else if(!s.toString().contains("$")){
materialEditText.setText("$"+s);
Selection.setSelection(materialEditText.getText(), materialEditText.getText().length());
}
}
下面的行导致冻结,如何修复此问题
materialEditText.getText().clear();
在
editText
的onTextChanged()
中调用setText()
将导致无限循环。您需要通过使用flag或其他方法来解决setText()
。仅在未更新时更新文本。这样它就不会进入无限循环在editText
的onTextChanged()
中调用setText()
将导致无限循环。您需要通过使用flag或其他方法来解决setText()
。仅在未更新时更新文本。这样它就不会进入无限循环如果我没有错的话,我猜它会进入无限循环,因为您在onTextChanged
中保存了一条语句,即materialEditText.setText(“$”+s)代码>哦,是的,谢谢你修复了它。你能把这个作为答案吗?如果我没有错的话,我想这是在一个无限循环中进行的,因为你在onTextChanged
I.ematerialEditText.setText(“$”+s)中保存了一条语句代码>哦,是的,谢谢你修复了它。你能把这个作为答案吗?