以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);
}