Android EditBox TextWatcher触发太多

时间:2013-06-22 01:39:36

标签: android events android-edittext onchange textwatcher

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

该应用使用一个始终最多包含1个字符的EditBox。当用户输入新角色时,将会触发听众。该侦听器的afterTextChanged方法(TextWatcher)处理输入的字符并清除文本。之后,它会清除文本框,并准备好听取下一个文本框。然而,在那之后它继续发射。我尝试设置一个标志只处理其他所有的射击,但有时它是狡猾的并且发射奇数次并将标志翻错。

@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)我需要在这做什么呢?

非常感谢,

1 个答案:

答案 0 :(得分:0)

首先,为什么

if (mToggle)

注释掉了吗?

其次,您只应在if:

中将mToggle设置为false
if (mToggle) {

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

}

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