我有两个按钮和一个edittext。每个按钮都有自己的一组文本,通过StringArray设置。
我的问题是,当我点击ButtonA两次以获得阵列中的角色#2时,它会弹出两次。我该如何防止这种情况?
来源的Pastebin在这里:http://pastebin.com/57PsZH5D
相关位:
String[] keyOne = {"A", "B", "C"};
String[] keyTwo = {"D", "E", "F"};
String pressedKey;
public void delayAction(View v) {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
et.getText().append(pressedKey);
counter = 0;
}
}, 500);
}
// Inside onclick
case R.id.button1:
counter++;
startTime = System.currentTimeMillis();
pressedKey = keyOne[counter];
delayAction(v);
if (counter >= 3) {
counter = 0;
}
break;
case R.id.button2:
counter++;
startTime = System.currentTimeMillis();
pressedKey = keyTwo[counter];
delayAction(v);
if (counter >= 3) {
counter = 0;
}
break;
答案 0 :(得分:0)
创建一个静态布尔变量说checkVal
并使用false
进行初始化,并在按钮A的单击事件中检查checkVal
的值是否为假,然后添加字符串并更改值checkVal
现在为真,当您点击按钮时它不会添加任何内容。
答案 1 :(得分:0)
您是否尝试模拟T9输入?你想要做的就是取消可运行的。
handler.removeCallbacks(可运行);
实际上,现在我考虑更多,如果您尝试做T9输入,那么就不要做任何延迟的事情。立即发布字符并记下时间(System.currentTimeMillis()和最后一个键被按下。当按下下一个键时,如果它是相同的键并且新时间小于某个截止值,则擦除最后一个键角色并把新的一个。这样做会给用户提供关于他们按键的直接视觉反馈。