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); }
希望它会有所帮助。
- 如何添加阴影到Android支持devise库提供的FAB?
- 支持库23.1.1中的AppBarLayout.setExpanded(boolean,true)奇怪的animation
- 运行cordova build -release android时出错
- 如何在android中的textview中包装文本
- 以可变parameter passing列表
- 在操作栏中实现SearchView
- 是否有开发iPhone / Android应用程序的多平台框架?
- 错误:执行失败的任务':android:transformClassesAndResourcesWithProguardForRelease'
- find一个外部SD卡位置