我使用NavigationDrawer模板,我可以切換片段。但我想在所有片段中更改工具欄功能。我如何在我的片段中設置獨特的工具欄操作?使用Navigation Drawer模板更改片段中的工具欄
回答
將您的NavigationView
一個NavigationItemSelected ClickListener
和它做這樣的事情:
switch (e.menuItem.itemId)
{
case (R.id.nav_home):
e.MenuItem.SetChecked(true);
toolbar.inflateMenu(R.menu.newMenu);
break;
case (R.id.nav_two):
e.MenuItem.SetChecked(true);
toolbar.inflateMenu(R.menu.newMenu2);
break;
}
,並創建你的菜單文件夾中新的XML文件,每個包含不同的控件你工具欄。 類似這樣的:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_close"
android:title=""
android:icon="@drawable/ic_close_white_24px"
app:showAsAction="always|collapseActionView"/>
<item android:id="@+id/..."
android:title=""
android:icon="..."
app:showAsAction="always|collapseActionView"/>
</menu>
我想你可以setHasOptionsMenu(true)
在onCreate()
方法的每個片段。和通常的ovveride方法onCreateOptionsMenu()
一樣。我的意思是充氣菜單和其他的東西,你創建菜單時,你總是這樣做。
現在的問題是您必須將DrawerListener設置爲您的DrawerLayout。然後進入聽衆ovveride方法onDrawerOpened()
和onDrawerClosed()
,其中每個人都必須致電invalidateOptionsMenu()
。使用android.support.v7.app.ActionBarDrawerToggle
作爲DrawerListener。進入方式類似
myDrawerLayout.addDrawerListener(new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view)
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
invalidateOptionsMenu();
}
};
這裏R.string.drawer_close和DRAWER_OPEN只是在資源字符串等於「關閉」,並分別爲「打開」。更多關於導航抽屜,你可以在這裏閱讀:Navigation Drawers。
請注意,您不能在每個片段中使用唯一的工具欄。我的意思是工具欄的實例。至少它從來沒有爲我工作。相反,創建一個工具欄一次,然後更改每個片段上的內容。要從所有片段訪問工具欄,可以使用一個名爲RetainFragment的幫助器片段,它將使用setRetainInstance(true)。它可以幫助你不破壞這個片段並將它保存到不同的變量或對象中。更詳細的,你可以在我的文章閱讀:Simple trick to use and manage Toolbar with Fragments in Android
謝謝,但你不要貶低我的意圖 –
- 1. android - FragmentActivity和Navigation Drawer
- 2. Navigation Drawer + Viewpager + setVisibility = InflateException/NullPointer
- 3. 無法更改片段工具欄的顏色
- 4. 從片段工具欄
- 5. 片段中的工具欄標題
- 6. 更改默認的工具欄 - 按鈕懸停模板
- 7. 在Navigation-Drawer的抽屜中加載自定義片段並在主佈局中打開相應的片段
- 8. Android設置片段工具欄標題
- 9. PhpStorm更改類片段(模板)
- 10. 在片段中獲取工具欄
- 11. 從工具欄管理工具欄中的按鈕從android中的片段
- 12. Chart.js:更改工具提示模板
- 13. 更改Emacs Lisp中的工具欄
- 14. 雙工具欄是顯示片段
- 15. 如何在Android中更改片段時爲工具欄設置圖標
- 16. 以編程方式更改Qt4中的matplotlib工具欄模式
- 17. 更改工具欄背景
- 18. 更改UIImagePicker中的工具欄標題
- 19. 更改工具欄中的backgorund顏色
- 20. 在片段中使用導航抽屜和工具欄
- 21. 將圖標添加到Android Navigation Drawer?
- 22. 工具欄作爲片段中的操作欄
- 23. 新片段重疊工具欄
- 24. 與片段/工具欄返回導航
- 25. 如何使片段覆蓋工具欄中的導航抽屜
- 26. CoordinatorLayout與工具欄和片段
- 27. 工具欄裏面的片段重疊片段
- 28. 片段重疊工具欄ViewPager
- 29. 自定義工具欄重疊片段
- 30. Android:創建片段工具欄
你的意思是每個片段的不同選項菜單? – ElDuderino
是的,剛纔所有的片段都有來自活動的工具欄 –
嘗試使用片段之間的通信並根據需要決定工具欄選項。 – sumandas