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

时间:2015-01-24 00:40:45

标签: android string button android-edittext

我有两个按钮和一个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;

2 个答案:

答案 0 :(得分:0)

创建一个静态布尔变量说checkVal并使用false进行初始化,并在按钮A的单击事件中检查checkVal的值是否为假,然后添加字符串并更改值checkVal现在为真,当您点击按钮时它不会添加任何内容。

答案 1 :(得分:0)

您是否尝试模拟T9输入?你想要做的就是取消可运行的。

handler.removeCallbacks(可运行);

实际上,现在我考虑更多,如果您尝试做T9输入,那么就不要做任何延迟的事情。立即发布字符并记下时间(System.currentTimeMillis()和最后一个键被按下。当按下下一个键时,如果它是相同的键并且新时间小于某个截止值,则擦除最后一个键角色并把新的一个。这样做会给用户提供关于他们按键的直接视觉反馈。