0

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

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

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

非常感谢,
内森

4

1 回答 1

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

}

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

于 2013-06-22T01:57:33.740 回答