バックグラウンド
Android 3.0用に開発しているので、HostActivity
とのスーパークラスであるがNotebooksActivity
ありNoteActivity
ます。NotebooksActivity
フラグメントを含みますNotebooksFragment
。
にはHostActivity
、アクションバーのオプションメニューの右端に表示するメニューを含めます。つまり、のサブクラスのすべてのメニュー項目は、で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
メニュー項目がの前に表示されます。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);
}
どうすれば希望のメニュー注文を達成できますか?