Change EditText text from onTextChangeListener()

2020-03-24 05:49发布

I am working on an Android application.In my app I have to use images based on the text.So I write OnChangeListener() for EditText.The following is my sample code.

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


}

But I am getting Exception for the above code.I know the reason for the exception is calling setText() from afterTextChanged() method. But I have to change the EditText text value based on the same EditText text change.Help me friends

2条回答
Anthone
2楼-- · 2020-03-24 06:20

One more solution can be to use boolean variable, so that it doesn't get into infinite callstack and eventually giving stackoverflow exception

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

            edt.setText("string");

            flag = false;
    }
}
查看更多
老娘就宠你
3楼-- · 2020-03-24 06:25

Just simply remove your listener before you set the text, and register it again after you are done, like described here:

Clear EditText text after adding onTextChanged implemenation

查看更多
登录 后发表回答