Java Android NavigationDrawerFragment:控制是否调用子片段或父活动的OnCreateOptions菜单,但不能同时调用两者
正如我在标题中提到的,我有一个带有NavigationDrawerFragment和另一个包含活动的片段的设置 理想情况下,我希望我的行为如下 当抽屉打开时,调用包含活动的OnCreateOptions菜单,但不要调用其他片段的OnCreateOptions菜单,即当前可见片段的OnCreateOptions菜单。 当抽屉关闭时,调用可见片段的onCreateOptions菜单方法,但不调用包含该片段的onCreateOptions菜单方法。Java Android NavigationDrawerFragment:控制是否调用子片段或父活动的OnCreateOptions菜单,但不能同时调用两者,java,android,android-fragments,navigation-drawer,Java,Android,Android Fragments,Navigation Drawer,正如我在标题中提到的,我有一个带有NavigationDrawerFragment和另一个包含活动的片段的设置 理想情况下,我希望我的行为如下 当抽屉打开时,调用包含活动的OnCreateOptions菜单,但不要调用其他片段的OnCreateOptions菜单,即当前可见片段的OnCreateOptions菜单。 当抽屉关闭时,调用可见片段的onCreateOptions菜单方法,但不调用包含该片段的onCreateOptions菜单方法。 使用生命周期回调是否可以实现这一点?或者我应该考虑改
使用生命周期回调是否可以实现这一点?或者我应该考虑改用事件总线。在您的活动中,让我们:
@Override
public boolean onCreateOptionsMenu(MenuInflater inflater, Menu menu){
boolean onlyFragments = !mDrawerLayout.isOpened(GravityCompat.START);
Fragment visibleFragment = getSupportFragmentManager().findFragmentById(R.id.content_layout);
visibleFragment.setHasOptionsMenu(onlyFragments);
if(onlyFragments){
return super.onCreateOptionsMenu(inflater,menu);
}else{
//here only activity inflates menu
inflater.inflate(R.menu.activity_menu, menu);
return true;
}
}
在onDrawerClosedView v和onDrawerOpenedView v调用InvalidateOptions功能表或其各自的支持方法中。我想这是可行的,我希望我不必动态地改变生命周期外观,任何其他想法都是很好的,但目前仍然有效