以dispatchKeyEvent为例
1、创建回调接口FragmentKeyeventListener
/*** 作者:created by meixi* 邮箱:13164716840@163.com* 日期:2018/9/10 15*/
public interface FragmentKeyeventListener {boolean onFragmentKeyEvent(KeyEvent event);
}
2、fragment实现接口
public class TestFragment extends Fragment implements FragmentKeyeventListener{
TestActivity testActivity ;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity); testActivity = (TestActivity)activity;
testActivity.setFragmentKeyeventListener(this); //设置监听
}
@Override
public boolean onFragmentKeyEvent(KeyEvent event) {//实现回调方法
return false;
}
}
3、activity代码,通过接口把dispatchKeyEvent事件传递到fragment
FragmentKeyeventListener fragmentKeyeventListener;public void setFragmentKeyeventListener(FragmentKeyeventListener fragmentKeyeventListener) {this.fragmentKeyeventListener = fragmentKeyeventListener;
}@Override
public boolean dispatchKeyEvent(KeyEvent event) {//防止该方法执行两次if(event.getKeyCode() == 66 && event.getAction() != KeyEvent.ACTION_UP) {//不响应按键抬起时的动作return false}if (fragmentKeyeventListener!=null&&event.getKeyCode()==66){fragmentKeyeventListener.onFragmentKeyEvent(event);return true;}return super.dispatchKeyEvent(event);
}