Android在onTextChanged中调用setText

Blu*_*rer 4 android settext

为了防止无限循环,我做了一件像这样丑陋的事......

    @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);
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以防止onTextChanged在更改文本时调用onTextChanged

Urb*_*ban 6

您可以使用标志来指定文本是否已更改一次.如果它已被更改一次,则不要再次更改,否则更改它.

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);
}
Run Code Online (Sandbox Code Playgroud)

  • 猜猜你的意思是在setText(tt)之前加上"flag_text = 1" (2认同)