在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方法获取不到事件,解决办法,
参考https://www.jianshu.com/p/30b3ed6f0486
网友评论