我正在尝试处理给定的输入字符,清除框,并准备处理另一个字符。
该应用程序使用的EditBox始终最多包含1个字符。当用户输入新字符时,监听器将触发。侦听器( 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)我需要在这里做什么?
非常感谢,
内森
发布于 2013-06-22 09:57:34
首先,为什么
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)条件再次运行一次。
https://stackoverflow.com/questions/17246529
复制相似问题