java - 根据上下文(片段)更改 AppBar 的图标
问题描述
我的 MainActivity 上有我的AppBar 。我的 MainActivity 的布局类似于片段容器。
我想要完成的是,我希望我的AppBar图标根据当前位于顶部的 Fragment 进行更改。
像这样的东西:
switch (item.getItemId()){
case R.id.semanario:
fragmentTransaction.replace(R.id.viewPagerMainContenedor, new FragmentSemanario());
fragmentTransaction.addToBackStack(null).commit();
myToolbar.SETICON(R.drawable.iconExample) (And how to change the xml atributte "app:showAsAction = always)
break;
我想过为每个片段制作一个AppBar,但它应该比这更容易,不是吗?
解决方案
如果您AppBar
对某些人有所不同,Fragments
则应AppBar
将Fragment
. 现在,您可能可以使用 the 管理更改您AppBar
的内容,FragmentTransactions
但稍后当您构建备份/向上导航或深度链接时,它会开始中断,您会希望从一开始就将其放在 Fragment 中。
编辑:当用户单击菜单项时,您知道Fragment
用户正在导航到什么,因为您FragmentTransaction
自己在做。但是,当用户按下后退按钮时,Android 会FragmentTransaction
为您执行此操作,并且判断Fragment
用户正在导航到的内容变得更加困难。您可以遍历所有内容Fragments
并FragmentManager
检查Fragment
可见内容,但可能同时有多个Fragments
可见内容(例如ViewPager
或平板电脑视图)。Fragments
当用户通过深层链接进入您的应用程序时,管理和后台堆栈已经是一个痛苦的问题。
当您的应用程序增长时,导航将变得越来越复杂。您未来的自己会感谢您将 放入AppBar
而Fragment
不是Activity
因为您不必担心保持与当前显示的同步Fragment
。
推荐阅读
- broken-pipe - 如何修复“google.api_core.exceptions.ServiceUnavailable:503 Broken pipe”错误
- sass - 如何通过使用 sass 悬停其他元素来更改其他 div 的样式
- android - Klaxon 没有读取 JSON 中的 JSONObject
- cromwell - 如何告诉 cromwell 和 womtool 使用哪个 WDL 版本?
- r - 在 Shiny 应用程序中复制 mapedit::selectFeatures(..., mode = "click") 的行为
- laravel - 如何在 laravel 中从数据库 groupBy week 获取结果
- pyqt - 如何在 PyQt5 固定大小的 QLabel 中放置文本?
- nginx - 错误的 CLS 指标
- python - 需要帮助使用正则表达式从错误日志中的一行中提取数据(Python)
- python - 为什么我们可以在 Python 中赋值之前使用全局变量?