Android 如何在不限制EditText的情况下将EditText的附加文本限制为单个字符?

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) {

我有两个按钮和一个编辑文本。每个按钮都有自己的文本集,通过字符串数组进行设置

我的问题是,当我点击两次ButtonA以进入数组中的字符2时,它会弹出两次。我怎样才能防止这种情况

源的Pastebin位于此处:

相关位:

    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的值和当前输入的值,如果两者都匹配,那么不做任何事情,如果它们不匹配,那么更改值并再次追加字符串您要追加到字符串中,或者您要用新字符替换添加的字符为什么是的。是的,哈哈。我该如何记下最后按下的键?只需将其存储为变量即可。