Android call setText within onTextChanged

2019-06-24 19:26发布

To prevent the infinite loop I did something as ugly as this...

    @Override
protected void onTextChanged(CharSequence text, int start,
        int lengthBefore, int lengthAfter) {

    String t = text.toString();
    String tt = t.toUpperCase();

    if (!t.equals(tt)) {

        setText(tt);
    }

    super.onTextChanged(text, start, lengthBefore, lengthAfter);
}

Is there any other way to prevent the onTextChanged from being called when changing the text within onTextChanged?

1条回答
Fickle 薄情
2楼-- · 2019-06-24 20:25

You could use flags that specify if the text has been changed once or not. If it has been changed once, then do not change again, else change it.

int flag_text=0;
protected void onTextChanged(CharSequence text, int start,
    int lengthBefore, int lengthAfter) {

    if (flag_text==0) {
        flag_text=1;
        setText(tt);
    }
    super.onTextChanged(text, start, lengthBefore, lengthAfter);
}
查看更多
登录 后发表回答