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

    @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);
}

在更改 onTextChanged 中的文本时,还有其他方法可以防止调用 onTextChanged 吗?

最佳答案

您可以使用标志来指定文本是否已更改一次。如果已经改过一次,就不要再改了,否则就改。

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);
}

关于Android 在 onTextChanged 中调用 setText,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9357543/

10-09 10:12