如何将多个菜单扩展到选项栏?

时间:2013-09-27 20:54:58

标签: android-fragments android-menu

(首先,我通过HoloEverywhere使用ActionbarSherlock,虽然我不知道这与此问题有关。)

我有三个片段的活动。每个片段都有自己的菜单项,它们都共享一些菜单项。我已经从StackOverflow中了解到,不允许在Activity中添加菜单项,然后在Fragment中添加更多项目(我曾尝试过...它会导致奇怪的错误)。所以Activity没有菜单,但每个片段都有。但是,我仍然试图避免重复每个片段的菜单xml中的菜单项。为此,我为每个片段提供了一个xml菜单,并且它们共享了一个xml菜单。例如,我有:

fragment_1_menu.xml
fragment_2_menu.xml 
all_fragments_menu.xml

并且,在Fragment1我正在尝试导入fragment_1_menu.xmlall_fragments_menu.xml

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  inflater.inflate(R.menu.all_fragments_menu, menu);
  inflater.inflate(R.menu.fragment_1_menu, menu);
  super.onCreateOptionsMenu(menu, inflater);
}

当我这样做时,它几乎有效,但在我的情况下,all_fragments_menu中的一个菜单项丢失了。我并不是说菜单上有一个空白洞......我的意思是它根本没有在菜单中显示。 XML ID是唯一的,并映射到R.java中的不同int。看起来应该工作。我对Fragment2做同样的事情,只是fragment_2_menu.xml没有项目,在这种情况下,所有菜单项都按预期显示。

这应该有用吗?我只是错过了一些东西吗?

1 个答案:

答案 0 :(得分:0)

我想我已经弄明白了。我犯了一些错误,误解了原因。我需要:

  1. 在XML(叹息)中将菜单showAsAction条款更改为“始终”。
  2. onCreateOptionsMenu()的开头调用menu.clear()。
  3. 做'别的'因为,虽然这可以直观地修复菜单,但按钮不能正确报告按下。菜单工作正常,直到我旋转设备,此时按钮停止工作(尽管它们看起来正确)。但我认为这可能与我报道的问题无关。