背景
针对Android 3.0开发,我有HostActivity
,它是NotebooksActivity
和NoteActivity
的超类。 NotebooksActivity
包含一个片段NotebooksFragment
。
在HostActivity
中,我包含一个菜单,我想在ActionBar的选项菜单的最右端显示,即。 HostActivity
子类中的所有菜单项都应显示在HostActivity
中添加的菜单项的左侧。
HostActivity
中的菜单通胀:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.host_menu, menu);
return super.onCreateOptionsMenu(menu);
}
问题
当我在NoteActivity
中添加菜单项时,我按预期达到了所需的顺序:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.notebook_menu, menu);
return super.onCreateOptionsMenu(menu);
}
但是,当我在NotebooksFragment
中添加菜单项时,由于片段的工作原理,onCreateOptionsMenu
会在HostActivity
中使用相同的方法调用,{strong>会导致{{1} }'的菜单项出现在HostActivity
之前。
NotebooksFragment
如何实现所需的菜单排序?
答案 0 :(得分:11)
您可以尝试使用android:menuCategory
和android:orderInCategory
更多地手动指定您的订购。
或者,在onPrepareOptionsMenu()
中使用HostActivity
,因为onCreateOptionsMenu()
之后会调用{{1}}。缺点是每次按下MENU按钮都会调用它,而不仅仅是第一次按下。