在Fragmentzhong中写按键监听,有两处处需要注意:
1)是否是当前显示的fragment;、
2)在所依托的activity中的onKeyDown方法处理监听事件;
其他地方和普通按键监听一样;
下面用我刚写的例子说明:
我在MainActivity中加入了一个CruiseFragment;我想在CruiseFragment中监听返回键:
为此我做了如下处理:
1)在MainActivity中写一个获取当前fragment的方法:
private Fragment getVisibleFragment() {
FragmentManager fragmentManager = MainActivity.this
.getSupportFragmentManager();
List<Fragment> fragments = fragmentManager.getFragments();
for (Fragment fragment : fragments) {
if (fragment != null && fragment.isVisible())
return fragment;
}
return null;
}
2)在MainActivity中重写onKeyDown方法:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (getVisibleFragment() != null
&& (getVisibleFragment() instanceof CruiseFragment)
&& keyCode == KeyEvent.KEYCODE_BACK) {
if (((CruiseFragment) getVisibleFragment()).mSidebarLayout
.getVisibility() == View.VISIBLE) {
((CruiseFragment) getVisibleFragment()).hideSidebar();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
最后,用手机调试,达到预期目标。