【发布时间】:2017-04-14 02:56:50
【问题描述】:
我设置了 3 个“顶级”片段,每个片段都使用自己的子片段管理器来提供向下钻取导航。这些顶级片段通过使用主活动的支持片段管理器进行替换来切换。
其中一个顶级片段有一个子片段,它使用setHasOptionsMenu() 和onCreateOptionsMenu() 将菜单选项添加到工具栏/操作栏,效果很好。
现在我刚刚注意到的问题是:
当添加新的子片段并且带有菜单项的子片段被隐藏(并且事务添加到顶级片段的后台堆栈)时,菜单项消失。同样,当通过撤消事务再次显示片段时,菜单项将返回。这是期望的行为,似乎完全由 Fragment 框架处理。
但是,如果子片段可见(因此,它的菜单项出现在工具栏中)并且我切换顶级片段,则菜单项仍保留在工具栏中。
我本以为菜单项会被清除,因为不仅它所属的子片段已被转储,而且甚至其父片段(在顶级片段中)也已被完全替换(甚至没有添加到backstack,直接替换)。
我想只要传入的顶级片段恢复,我就可以在活动上调用invalidateOptionsMenu(),但我觉得我缺少一些东西来自动处理它,就像在顶级中导航时一样片段。
【问题讨论】:
标签: android android-fragments android-actionbar android-toolbar android-menu