【问题标题】:How can I limit appended text to EditText to a single character without limiting the EditText?如何在不限制 EditText 的情况下将 EditText 的附加文本限制为单个字符?
【发布时间】:2015-03-23 03:34:11
【问题描述】:

我有两个按钮和一个编辑文本。每个按钮都有自己的一组通过 StringArray 设置的文本。

我的问题是,当我单击 ButtonA 两次以到达数组中的字符 #2 时,它会弹出两次。我怎样才能防止这种情况发生?

来源粘贴箱在这里: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;

【问题讨论】:

  • 请在此处发布您的相关代码
  • 假设你在一个Activity中,为什么会有Handler这样的方式?
  • 有更好的方法吗?我认为它会留下更少的代码,只在我想要的时候运行。

标签: android string button android-edittext


【解决方案1】:

创建一个静态布尔变量checkVal 并使用false 进行初始化,并在按钮A 的单击事件中检查checkVal 的值,如果它为false,则添加字符串并将checkVal 的值更改为true当您第二次单击该按钮时,它不会添加任何内容。

【讨论】:

  • 如果 OP 想要第三个值怎么办?
  • 好的,所以您可以在 else 条件下编写代码,您可以将先前的 edittext 的值与当前输入的值进行比较,如果两者都匹配则不执行任何操作,如果它们不匹配则更改值并再次追加字符串
  • 你想在字符串中追加或者你想用新的字符替换添加的字符
【解决方案2】:

您是否要模拟 T9 输入?您想要做的是取消可运行文件。

handler.removeCallbacks(runnable);

其实,现在我想多了,如果你想做T9输入,那就不要做任何延迟的事情。立即发布字符并记下时间(System.currentTimeMillis() 和按下的最后一个键。当按下下一个键时,如果它是同一个键并且新时间小于某个截止时间,则擦除最后一个字符并放置新的。这样做会给用户在他们的按键上的即时视觉反馈。

【讨论】:

  • 为什么是。是的,我是,哈哈。我将如何记录最后按下的键?
  • 只需将其存储为变量。
猜你喜欢
  • 2012-06-14
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2017-02-26
  • 2011-08-26
  • 1970-01-01
相关资源
最近更新 更多