我尝试了这么多的答案,在这里提供了不同的帖子,但没有什么对我有用。
问题----我有导航抽屉,其中有6个片段,但只有一个活动。一切都很顺利,直到我把抽屉里的第一位碎片换成了。我想在第一个片段里滑动标签。所以我用了FragmentStatePagerAdapter。
尝试1:为了解决这个问题,我最初使用了:
@Override
public void onPrepareOptionsMenu(Menu menu) {
menu.clear();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.story, menu);
}这样我就没有复制菜单了,但是现在我看不到MainActivity menus了。
Try 2:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
getActivity().invalidateOptionsMenu();
inflater.inflate(R.menu.story, menu);
}通过这个,我得到了片段和活动菜单,但是有重复的。
这应该很容易解决,但我并没有找到一个方法来处理这个问题。也许我对生命周期不太了解?
,我的另一种方法,--用片段实现所有菜单将起作用,但这应该是我们最后的选择。
解决方案-为了维护这两个菜单,我所要做的就是这个(非常简单的解决方案):
menu.clear();
inflater.inflate(R.menu.story, menu);
getActivity().getMenuInflater().inflate(R.menu.main, menu);问题2 OnOptionsItemSelected方法从第1片段开始在其他片段中被调用。
发布于 2015-12-18 07:37:22
private void hideAllMenuItems() {
if (actionBarMenu != null) {
actionBarMenu.findItem(R.id.action_item1).setVisible(false);
actionBarMenu.findItem(R.id.action_item2).setVisible(false);
}
}
private void showMenuIcon() {
if (actionBarMenu != null) {
hideAllMenuItems();
if (currentFragment instanceof Fragment1)
actionBarMenu.findItem(R.id.action_item1).setVisible(true);
else if (currentFragment instanceof Fragment2)
actionBarMenu.findItem(R.id.action_item2).setVisible(true);
}
}每次加载新片段时调用shoeMenuIcon()。
希望你在找这个
https://stackoverflow.com/questions/34349728
复制相似问题