【问题标题】:OnKeyListener OnKey repeats actionOnKeyListener OnKey 重复动作
【发布时间】:2013-02-13 11:47:22
【问题描述】:

我正在尝试修改用户单击“DEL”键(在屏幕键盘上)时的操作,这是代码

ed.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_DEL) {
                if(contadorcor == 0){
                    String output = correctOutput(String.valueOf(ed.getText()));
                    ed.setText(output);
                    ed.setSelection(num);
                    contadorcor++;
                }
            }
            contadorcor = 0;
            return false;
        }
    });

public static String correctOutput(String s) {
    String input = s;
    int pos = 0;
    for (int i = 0; i < input.length(); i++) {
            if(input.charAt(i) != ' ') {
            if(input.charAt(i) != '_') {
                pos = i;
            }
        }
    }
    String output = "";
    for (int i = 0; i < input.length(); i++) {
        if(i != pos) {
            output = output + String.valueOf(input.charAt(i));
        } else {
            output = output + "_";
        }
    }
    num = num - 2;
    return output;
}

要理解我为什么这样做是因为有一个像这样的未知词“_ _ _ _ _ _ _ _ .....”当用户在尝试猜测时删除一个字母时,让我们说“T H I S I K |_ _ ...” 并且想要更正“K”并且光标就在下一个“下划线”的开头我想删除“k”并用“下划线”替换它然后将光标放在那里. “我是我 |_ _ _ _ ....”

但是当我按下删除键时,会执行两次此操作,并删除 2 个字母。我认为它捕获了 keydown 和 keyup ,这就是它重复的原因,但我不知道如何修复它。我尝试制作某种计数器,但它也不起作用

提前致谢。

【问题讨论】:

    标签: android keylistener keyevent


    【解决方案1】:

    在 onKey 方法中,您有一个参数:事件。您可以执行以下操作:

    if(event.getAction()==KeyEvent.ACTION_UP){
    ...
    }
    else if(event.getAction()==KeyEvent.ACTION_DOWN){
    ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多