5

我正在开发一个 Android 应用程序。在我的应用程序中,我必须使用基于文本的图像。所以我写OnChangeListener()EditText。以下是我的示例代码。

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


}

但是我得到了上述代码的异常。我知道异常的原因是setText()afterTextChanged()方法调用。但是我必须EditText根据相同的EditText文本更改来更改文本值。帮助我的朋友

4

2 回答 2

8

另一种解决方案是使用布尔变量,这样它就不会进入无限调用堆栈并最终给出stackoverflow exception

public void afterTextChanged(Editable s) {
    if(!flag) 
    {
            flag = true;

            edt.setText("string");

            flag = false;
    }
}
于 2013-06-21T05:24:08.393 回答
1

只需在设置文本之前删除您的侦听器,并在完成后再次注册,如下所述:

添加 onTextChanged 实现后清除 EditText 文本

于 2012-08-30T07:15:52.783 回答