我正在开发一个Android应用程序。在我的应用程序中,我必须使用基于文本的图像。所以我为EditText
写OnChangeListener()
。以下是我的示例代码。
edt.addTextChangedListener(this);
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
CharSequence cs=convert(edt.getText.toString());
edt.setText(cs);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
但我得到了上面代码的异常。我知道异常的原因是从afterTextChanged()
方法调用setText()
。但我必须在相同的EditText
文本更改的基础上更改EditText
文本值。帮助我的朋友
另一个解决方案是使用布尔变量,这样它就不会进入无限调用堆栈,并最终给出stackoverflow exception
public void afterTextChanged(Editable s) {
if(!flag)
{
flag = true;
edt.setText("string");
flag = false;
}
}
只需在设置文本之前删除侦听器,然后在完成后再次注册即可,如下所述:
添加onTextChanged实现后清除EditText文本