我正在尝试处理给定的输入字符,清除该框,并准备处理另一个。
该应用使用一个始终最多包含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)我需要在这做什么呢?
非常感谢,
森
答案 0 :(得分:0)
首先,为什么
if (mToggle)
注释掉了吗?
其次,您只应在if:
中将mToggle设置为falseif (mToggle) {
act.checkText(arg0.toString().substring(arg0.length() - 1));
text.setText("");
mToggle = false; // to catch extra fire-off
}
然后,代码中的其他地方(当用户点击另一个editBox时,你可以将mToggle设置回true。这将允许你的if(mToggle)条件再次运行一次。