Android 如何在不限制EditText的情况下将EditText的附加文本限制为单个字符?
我有两个按钮和一个编辑文本。每个按钮都有自己的文本集,通过字符串数组进行设置 我的问题是,当我点击两次ButtonA以进入数组中的字符2时,它会弹出两次。我怎样才能防止这种情况 源的Pastebin位于此处: 相关位:Android 如何在不限制EditText的情况下将EditText的附加文本限制为单个字符?,android,string,button,android-edittext,Android,String,Button,Android Edittext,我有两个按钮和一个编辑文本。每个按钮都有自己的文本集,通过字符串数组进行设置 我的问题是,当我点击两次ButtonA以进入数组中的字符2时,它会弹出两次。我怎样才能防止这种情况 源的Pastebin位于此处: 相关位: String[] keyOne = {"A", "B", "C"}; String[] keyTwo = {"D", "E", "F"}; String pressedKey; public void delayAction(View v) {
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;
创建一个静态布尔变量,比如说
checkVal
,并用false
初始化,在点击按钮a的情况下,检查checkVal
的值,如果该值为false,则添加字符串,并立即将checkVal
的值更改为true。当第二次点击按钮时,它不会添加任何内容 您正在尝试模拟T9输入吗?您要做的是取消runnable
handler.removeCallbacks(可运行)
事实上,现在我想了很多,如果你想做T9输入,那就不要做任何延迟的事情。立即张贴字符并记下时间(System.currentTimeMillis()按下最后一个键。当按下下一个键时,如果是同一个键,并且新的时间小于某个截止时间,则删除最后一个字符并放置新的字符。这样做将给用户提供有关按键的即时视觉反馈。在此处发布相关代码,请假设您正在进行活动,为什么有
Handler
以这种方式处理?有没有更好的方法?我认为这样可以减少代码,只在我需要的时候运行。如果OP需要第三个值怎么办?好的,那么你可以在else条件下编写一个代码,在这个条件下,你可以比较前一个edittext的值和当前输入的值,如果两者都匹配,那么不做任何事情,如果它们不匹配,那么更改值并再次追加字符串您要追加到字符串中,或者您要用新字符替换添加的字符为什么是的。是的,哈哈。我该如何记下最后按下的键?只需将其存储为变量即可。