在Fragment中监听onKeyDown事件

在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

你可能感兴趣的:(在Fragment中监听onKeyDown事件)