Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android NavigationDrawerFragment:控制是否调用子片段或父活动的OnCreateOptions菜单,但不能同时调用两者_Java_Android_Android Fragments_Navigation Drawer - Fatal编程技术网

Java Android NavigationDrawerFragment:控制是否调用子片段或父活动的OnCreateOptions菜单,但不能同时调用两者

Java Android NavigationDrawerFragment:控制是否调用子片段或父活动的OnCreateOptions菜单,但不能同时调用两者,java,android,android-fragments,navigation-drawer,Java,Android,Android Fragments,Navigation Drawer,正如我在标题中提到的,我有一个带有NavigationDrawerFragment和另一个包含活动的片段的设置 理想情况下,我希望我的行为如下 当抽屉打开时,调用包含活动的OnCreateOptions菜单,但不要调用其他片段的OnCreateOptions菜单,即当前可见片段的OnCreateOptions菜单。 当抽屉关闭时,调用可见片段的onCreateOptions菜单方法,但不调用包含该片段的onCreateOptions菜单方法。 使用生命周期回调是否可以实现这一点?或者我应该考虑改

正如我在标题中提到的,我有一个带有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功能表或其各自的支持方法中。

我想这是可行的,我希望我不必动态地改变生命周期外观,任何其他想法都是很好的,但目前仍然有效