我只有很少的 fragment 和一项 Activity 。该应用程序包含始终可见的工具栏。我的工具栏上有一个图标。我需要在用户打开 2、4、5 fragment 时隐藏此图标,并在用户打开 1 和 3 fragment 时显示此图标。我不需要此逻辑的所有代码,我需要建议如何实现它以及在哪里为此行为添加一些逻辑
最佳答案
假设您使用 jetpack 的导航和单一 Activity,以下情况正确:
将目的地更改监听器添加到 Activity 内的主导航 Controller (addOnDestinationChangedListener
,接口(interface)为NavController.OnDestinationChangedListener
)。在监听器内部,您可以在 onDestinationChanged
实现中检查 destination.id
。实际上,您可以像这样创建两个集合
private val twoFourFiveDestinations =
setOf(R.id.two, R.id.four, R.id.five)
private val oneThreeDestinations =
setOf(R.id.one, R.id.three)
只需进行这样的检查 if(twoFourFiveDestinations.contains(destination.id) ...
并相应地管理您的图标可见性,这将使生活变得更轻松。
替代解决方案是将图标管理移交给 fragment 。您可以定义一些用于与 Activity 通信的接口(interface),并在相应的 fragment 启动并运行时管理工具栏图标。但您需要在问题的每个 fragment 中都这样做。
关于android - 打开某些 fragment 时如何隐藏/显示工具栏上的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61886648/