フラグメントを使用すると、ActionBarにメニューが表示されません。onCreateOptionsMenu()メソッドの実装にもかかわらず、コードのどこに問題があるのかわかりません。これが私が使用しているコードです:
public class LesAvis extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
View rootView = inflater.inflate(R.layout.avis, container,false);
ListView listeAvis = (ListView) rootView.findViewById(R.id.listView);
return rootView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_menu, menu);
super.onCreateOptionsMenu(menu,inflater);
}
}
ただし、onCreateOptionsMenu()メソッドを実装するためにコードのこの部分を使用すると、必要なものが得られます(アクションバーのメニュー)。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add("Compte")
.setIcon(R.drawable.ic_compte)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add("Compte")
.setIcon(R.drawable.ic_historique)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add("Compte")
.setIcon(R.drawable.ic_param)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
各フラグメントのメニューを追加するには、多くの手順を実行する必要があります。
1)まず、以下のようにフラグメントのonCreateView()にsetHasOptionsMenu(true)を追加します。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
....
}
2)以下のようにフラグメントのonCreateOptionsMenu()メソッドをオーバーライドします。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
inflater.inflate(R.menu.menu_above_details_fragment, menu);
return;
}
3)次のように、アクティビティのonOptionsItemSelected()メソッドをオーバーライドします。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
Intent i;
switch (item.getItemId()) {
case R.id.action_param:
i = new Intent(this, Settings.class);
startActivity(i);
return true;
case R.id.action_history:
i = new Intent(this, HistoryMenu.class);
startActivity(i);
return true;
}
return onOptionsItemSelected(item);
}
4)フラグメントのonOptionsItemSelected()やアクティビティのonCreateOptionsMenu()をオーバーライドしないでください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加