Android工具栏添加不同片段的菜单项

我有一个工具栏以及一个导航抽屉。 当我开始我的应用程序,工具栏和导航抽屉被创build。 当我点击导航抽屉中的项目时,它会启动新的碎片并保留相同的工具栏。 我如何基本上添加菜单项到工具栏,如search,添加,编辑到我的工具栏,当我启动特定的片段。 在程序开始时我不想要它们,而是dynamic创build。 另外,我将如何能够点击这些button,并让他们开始其他片段。 我想在一个片段中,工具栏中的编辑button与另一个片段中的编辑button相比,会做一些特定的事情。 谢谢!

Menu_toolbar:

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/edit" android:orderInCategory="1" android:title="Edit" app:showAsAction="always" android:icon="@drawable/pencil_icon"/> <item android:id="@+id/add" android:orderInCategory="1" android:title="Add" app:showAsAction="always" android:icon="@drawable/plus_icon"/> 

工具栏:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="55dp" android:background="#10a1ff" android:title="Home" /> 
 @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.library_fragment, parent, false); setHasOptionsMenu(true); return v; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.your_menu_xml, menu); super.onCreateOptionsMenu(menu, inflater); } 

这是如何dynamic创build菜单: http : //www.101apps.co.za/index.php/articles/using-toolbars-in-your-apps.html

编辑:

 Toolbar actionBarToolBar = (Toolbar) findViewById(R.id.my_toobar); setSupportActionBar(actionBarToolBar); actionBarToolBar.setNavigationIcon(R.drawable.icon); actionBarToolBar.setNavigationContextDescription(getResources().getString(R.string.desc); actionBarToolBar.setLogo(R.drawable.other_icon); actionBarToolBar.setLogoDescription(getResources().getString(R.string.other_desc); actionBarToolBar.inflateMenu(R.menu.fragment_menu); 

在每个片段中重写onCreateOptionsMenu方法。

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.your_menu_xml, menu); super.onCreateOptionsMenu(menu, inflater); } 

我正确地解决了这个问题。 我的解决scheme如下代码:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment mRootView = inflater.inflate(R.layout.fragment_order_history, container, false); //getActivity().invalidateOptionsMenu(); setHasOptionsMenu(true); return mRootView; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.main, menu); super.onCreateOptionsMenu(menu, inflater); } 

我有同样的问题,我想相应地将工具栏菜单replace为显示的片段。

我现在面临的问题是菜单被添加到前一个。

为了只显示片段的菜单,我build议:

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { menu.clear(); //Empty the old menu inflater.inflate(R.menu.menu_fragment1, menu); super.onCreateOptionsMenu(menu, inflater); } 

希望它会有所帮助。