当用户按下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("");
}
}
我想在用户按下设备上的删除按钮时删除以前的EditText值,但是在按下删除按钮时不会调用它。但是onKeyDown()方法没有调用。
请帮帮我。
感谢。
答案 0 :(得分:0)
来自活动文档:
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进行子类化,尽管这也是一个选项。 您可以从此SO-Question获取keyListener的模板: Get the key pressed in an EditText
下一页编辑: 我刚刚意识到第一个解决方案只适用于硬件键盘。 如果你想要虚拟键盘支持,我最好的猜测是TextWatcher。 请参阅此处的示例实现: Validating edittext in Android
下一个并且充满希望的最终编辑:
一些谷歌搜索出现了Activity dispatchKeyEvent()
- 方法。只需像使用onKeyDown一样实现它,您将传递一个KeyEvent,它将告诉您所有关于按下的键的信息。
这是指向文档的链接:
http://developer.android.com/reference/android/app/Activity.html#dispatchKeyEvent%28android.view.KeyEvent%29