Android onKeyDown()在按delete按钮时不执行
当用户按下android设备的删除按钮时,我使用以下方法从EditText中删除值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
@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?使用断点或日志记录来解决这个问题,然后更新您的问题。