首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓EditBox TextWatcher触发过多

安卓EditBox TextWatcher触发过多
EN

Stack Overflow用户
提问于 2013-06-22 09:39:36
回答 1查看 222关注 0票数 0

我正在尝试处理给定的输入字符,清除框,并准备处理另一个字符。

该应用程序使用的EditBox始终最多包含1个字符。当用户输入新字符时,监听器将触发。侦听器( TextWatcher)的afterTextChanged方法处理输入的字符并清除文本。在此之后,它清除文本框,并让它准备好侦听下一个文本框。然而,在那之后,它仍在继续发射。我尝试设置一个标志,只处理每隔一次的触发,但有时它是不正确的,会触发奇数次,并将标志反转错误。

代码语言:javascript
复制
@Override
public void afterTextChanged(Editable arg0) {
    if (arg0.length() > 0) {
        //if (mToggle)
        {
            act.checkText(arg0.toString().substring(arg0.length() - 1));
            text.setText("");
        }
        mToggle = !mToggle; // to catch extra fire-off
    }
}

mToggle是TextWatcher实现的属性变量。

1)为什么要多次解雇?

2)我需要在这里做什么?

非常感谢,

内森

EN

回答 1

Stack Overflow用户

发布于 2013-06-22 09:57:34

首先,为什么

代码语言:javascript
复制
if (mToggle)

被注释掉了?

其次,您应该只在if中将mToggle设置为false:

代码语言:javascript
复制
if (mToggle) {

      act.checkText(arg0.toString().substring(arg0.length() - 1));
      text.setText("");
      mToggle = false; // to catch extra fire-off

}

然后,在代码中的其他地方(当用户单击另一个editBox时,您可以将mToggle设置回true。这将允许if (mToggle)条件再次运行一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17246529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档