首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnKeyListener OnKey重复操作

OnKeyListener OnKey重复操作
EN

Stack Overflow用户
提问于 2013-02-13 19:47:22
回答 1查看 937关注 0票数 0

我正在尝试修改当用户点击"DEL“键(在屏幕键盘上)时的动作,下面是代码

代码语言:javascript
复制
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”,并用“下划线”代替它,然后将光标放在那里。"T H I S I |_ ....“

但当我按下delete键时,这个动作就会发生两次,并删除2个字母。我假设捕获了keydown和keyup,这就是为什么它会重复,但我不知道如何修复它。我试着做了一些计数器,但它也不起作用

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-13 19:50:17

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

代码语言:javascript
复制
if(event.getAction()==KeyEvent.ACTION_UP){
...
}
else if(event.getAction()==KeyEvent.ACTION_DOWN){
...
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14852847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档