在Activity中可以很轻监听到onKeyDown事件,但大部分场景我们的操作是在Fragment中完成的,此时要获取到onKeyDown事件需要多做点事
1.首先在Fragment的宿主Activity中重写onKeyDown方法
2.在Fragment中写一个方法,比如:onKeyDownChild(int keyCode, KeyEvent event)
3.在onKeyDown中获取到该Fragment的实例化对象,并调用onKeyDownChild(int keyCode, KeyEvent event)方法
将 keyCode, Event event作为参数传递过去,这样就可以在Fragment中获取到onKeyDown事件
代码如下:
宿主Activity
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (fragmentsList != null && fragmentsList .size() >= 1) {
Fragment fragment = fragmentsList .get(0);
((TextingFragment) fragment).onKeyDownChild(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
Fragment
public void onKeyDownChild(int keyCode, KeyEvent event) {
}
备注:如果在Fragment中弹出Dialog对话框时,通过onKeyDownChild方法获取不到事件,解决办法,
参考/p/30b3ed6f0486
如果觉得《android全局监听onkeydown 在Fragment中监听onKeyDown事件》对你有帮助,请点赞、收藏,并留下你的观点哦!