Android fragments 如何将多个菜单充气到选项栏中?
(首先,我通过HoloEverywhere使用ActionbarSherlock,尽管我不知道这与问题有关。) 我有一个有三个片段的活动。每个片段都有自己的菜单项,它们都共享一些菜单项。我已经从StackOverflow中学到,不允许在活动中添加菜单项,然后在Android fragments 如何将多个菜单充气到选项栏中?,android-fragments,android-menu,Android Fragments,Android Menu,(首先,我通过HoloEverywhere使用ActionbarSherlock,尽管我不知道这与问题有关。) 我有一个有三个片段的活动。每个片段都有自己的菜单项,它们都共享一些菜单项。我已经从StackOverflow中学到,不允许在活动中添加菜单项,然后在片段中添加更多项(我已经尝试过了…它会导致奇怪的错误)。因此,活动没有菜单,但每个片段都有。但是,我仍在努力避免在每个片段的菜单xml中重复菜单项。为了做到这一点,我为每个片段提供了一个xml菜单,它们都共享一个xml菜单。例如,我有: f
片段中添加更多项(我已经尝试过了…它会导致奇怪的错误)。因此,活动
没有菜单,但每个片段都有。但是,我仍在努力避免在每个片段的菜单xml中重复菜单项。为了做到这一点,我为每个片段提供了一个xml菜单,它们都共享一个xml菜单。例如,我有:
fragment_1_menu.xml
fragment_2_menu.xml
all_fragments_menu.xml
在Fragment1
中,我试图导入Fragment1\u menu.xml
和all\u fragments\u 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\u fragments\u menu
中的一个菜单项丢失了。我不是说菜单上有个空白。。。我的意思是它根本没有出现在菜单上。XML ID是唯一的,并且映射到R.java中的不同int。看起来应该能用。我对Fragment2
做了同样的事情,只是Fragment2\u menu.xml
没有任何项目,在这种情况下,所有菜单项目都会按预期显示
这样行吗?我只是错过了什么吗?我想我已经找到了答案。我犯了一些错误,误解了原因。我需要:
将菜单showAsAction
术语更改为XML中的“始终”(叹气)
调用onCreateOptions菜单()开头的menu.clear()
执行“其他操作”,因为虽然这样可以直观地修复菜单,但按钮没有正确地报告按下。菜单工作正常,直到我旋转设备,此时按钮停止工作(尽管它们看起来是正确的)。但我认为这可能与我报道的问题无关