首页 > 解决方案 > 根据上下文(片段)更改 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,但它应该比这更容易,不是吗?

标签: javaandroidandroid-fragmentsappbar

解决方案


如果您AppBar对某些人有所不同,Fragments则应AppBarFragment. 现在,您可能可以使用 the 管理更改您AppBar的内容,FragmentTransactions但稍后当您构建备份/向上导航或深度链接时,它会开始中断,您会希望从一开始就将其放在 Fragment 中。

编辑:当用户单击菜单项时,您知道Fragment用户正在导航到什么,因为您FragmentTransaction自己在做。但是,当用户按下后退按钮时,Android 会FragmentTransaction为您执行此操作,并且判断Fragment用户正在导航到的内容变得更加困难。您可以遍历所有内容FragmentsFragmentManager检查Fragment可见内容,但可能同时有多个Fragments可见内容(例如ViewPager或平板电脑视图)。Fragments当用户通过深层链接进入您的应用程序时,管理和后台堆栈已经是一个痛苦的问题。

当您的应用程序增长时,导航将变得越来越复杂。您未来的自己会感谢您将 放入AppBarFragment不是Activity因为您不必担心保持与当前显示的同步Fragment


推荐阅读