Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onKeyDown()在按delete按钮时不执行_Android_Methods_Onkeydown - Fatal编程技术网

Android onKeyDown()在按delete按钮时不执行

Android onKeyDown()在按delete按钮时不执行,android,methods,onkeydown,Android,Methods,Onkeydown,当用户按下android设备的删除按钮时,我使用以下方法从EditText中删除值 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DEL) { onDeleteKey(); return true; } return super.onKeyDown(keyCode, event); } p

当用户按下android设备的删除按钮时,我使用以下方法从EditText中删除值

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_DEL) {
        onDeleteKey();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}


private void onDeleteKey() {
    if (edt_passcode1.isFocused()) {

    } else if (edt_passcode2.isFocused()) {
        edt_passcode1.requestFocus();
        edt_passcode1.setText("");
    } else if (edt_passcode3.isFocused()) {
        edt_passcode2.requestFocus();
        edt_passcode2.setText("");
    } else if (edt_passcode4.isFocused()) {
        edt_passcode3.requestFocus();
        edt_passcode3.setText("");
    }
}
我想在用户按下设备上的delete按钮时删除上一个EditText值,但在按下delete按钮时不会调用该值。但是onKeyDown方法没有被调用

请帮帮我


谢谢。

活动文档:

Called when a key was pressed down and not handled by any of the views 
inside of the activity. So, for example, key presses while the cursor 
is inside a TextView will not trigger the event (unless it is a 
navigation to another object) because TextView handles its own key 
presses. 
我猜这是你的问题

链接:

编辑: 一个可能的解决方案是将自定义onKeyListener附加到TextView。没有必要像评论员建议的那样将TexView子类化,尽管这也是一个选项。 您可以从以下问题获得keyListener的模板:

下一次编辑: 我刚刚意识到第一种解决方案只适用于硬件键盘。 如果你想要虚拟键盘支持,我的最佳选择是一个文本观察者。 请参见此处的示例实现:

下一个也是最后一次编辑: 一些谷歌搜索发现了Activity的dispatchKeyEvent-method。只需像使用onKeyDown一样实现它,就会向您传递一个KeyEvent,它将告诉您有关按下的键的所有信息。 以下是指向文档的链接:

这是一个片段还是一个活动?我也有同样的问题。我通过创建自定义textView并向其中添加侦听器解决了此问题。嗨,skynet,我正在一个活动中使用此代码。但我不知道有任何硬件删除键。未调用哪个方法?onKeyDown还是onDeleteKey?使用断点或日志记录来解决这个问题,然后更新您的问题。