FragmentでToolbarのMenuを使う
とある事情によりFragmentからToolbarのMenuを使いたくなりました。
Fragmentを使ってMenuを動的に作成する « Tech Booster
Android。フラグメントでアクションバーを使う。 - そごうソフトウェア研究所
上記の記事を参考にして試してみたのですが、現在ではなかなかうまくいかなくて、 結局、公式ドキュメントのAPIざーっと眺めて試した結果、うまくいったのは以下のような感じです。
package com.example.woshidan.fragmentmenutest; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; public class MainFragment extends Fragment { static final String LOGTAG = "MainFragment"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle) { View view = inflater.inflate(R.layout.content_main, viewGroup, false); Toolbar toolbar = (Toolbar)view.findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.menu_main); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: Log.v(LOGTAG,"menu action_settings is pushed"); break; default: Log.v(LOGTAG,"menu others is pushed"); break; } return false; } }); return view; } @Override public void onDestroyView() { Toolbar toolbar = (Toolbar)getView().findViewById(R.id.toolbar); toolbar.setOnMenuItemClickListener(null); super.onDestroyView(); } }