Jon*_*lis 10 android menu android-fragments android-activity
背景
对于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);
}
Run Code Online (Sandbox Code Playgroud)
问题
当我添加菜单项时NoteActivity
,我按预期实现了所需的顺序:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.notebook_menu, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我添加菜单项时NotebooksFragment
,由于Fragments的工作方式,onCreateOptionsMenu
在相同的方法之后调用HostActivity
,导致HostActivity
菜单项出现在之前NotebooksFragment
.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.notebooks_menu, menu);
SearchView sv = new SearchView(getActivity());
sv.setOnQueryTextListener(this);
menu.findItem(R.id.search_notebooks).setActionView(sv);
super.onCreateOptionsMenu(menu, inflater);
}
Run Code Online (Sandbox Code Playgroud)
如何实现所需的菜单排序?
Com*_*are 11
您可以尝试使用android:menuCategory
和android:orderInCategory
更多地手动指定您的订购.
或者,使用onPrepareOptionsMenu()
in HostActivity
,因为之后被称为onCreateOptionsMenu()
.缺点是每次按下MENU按钮都会调用它,而不仅仅是第一次按下.
归档时间: |
|
查看次数: |
3203 次 |
最近记录: |