我希望能在我的自定义视图(例如EditText)中检测返回键事件。通常情况下,可以通过重写onKeyDown()或dispatchKeyEvent()方法来实现,在这种情况下,我的自定义视图需要获得焦点。
CustomView.java
然而,如果一个包含CustomView的Activity也同时重写了onKeyDown()或dispatchKeyEvent()方法,它可能无法正常工作。也就是说,在CustomView之前,Activity已经获取了Back-KeyEvent。
我更希望在Activity之前捕获Back-KeyEvent。
请告诉我一些解决这个问题的想法。 谢谢。
CustomView.java
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK) {
.....
return true;
}else{
return super.onKeyDown(keyCode, event);
}
}
然而,如果一个包含CustomView的Activity也同时重写了onKeyDown()或dispatchKeyEvent()方法,它可能无法正常工作。也就是说,在CustomView之前,Activity已经获取了Back-KeyEvent。
我更希望在Activity之前捕获Back-KeyEvent。
请告诉我一些解决这个问题的想法。 谢谢。
Activity
中,当按下某个键且未被活动内任何视图处理时,将调用onKeyDown
方法。首先会在焦点视图上调用onKeyDown
,然后是在Activity
上,最后才是在其他视图上。 - Michal ChudyView#onKeyPreIme
,Activity#dispatchKeyEvent
,View#dispatchKeyEvent
,View#onKeyDown
,最后是Activity#onKeyDown
。谢谢! - Gottie