Android 在 onTextChanged 中调用 setText

Posted

技术标签:

【中文标题】Android 在 onTextChanged 中调用 setText【英文标题】:Android call setText within onTextChanged 【发布时间】:2012-03-10 13:57:57 【问题描述】:

为了防止无限循环,我做了这么丑陋的事情......

    @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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这是我通常做的;很高兴看看是否有更优雅的解决方案 猜你的意思是把 "flag_text = 1" 放在 setText(tt) 之前

以上是关于Android 在 onTextChanged 中调用 setText的主要内容,如果未能解决你的问题,请参考以下文章

如何在 onTextChanged() 中使用 setSpan() 来保存 onTextChanged() 的参数?

安卓onTextChanged参数解释及实现EditText字数监听 Editable使用

如何创建一个创建 onTextChanged Listener 并允许程序员设置不同行为的类

如何从 TextInput(onChange 或 onTextChange)创建 rxjs Observable

UpdatePanel OnTextChanged 中的 ASP.NET TextBox 不会触发

Android listview item中使用TextWatcher