android - 打开某些 fragment 时如何隐藏/显示工具栏上的图标

标签 android kotlin navigation fragment

我只有很少的 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/

相关文章:

javascript - Hammer.js 阻止 Android Webview 中的超链接点击

kotlin - 如何在 Kotlin 中的循环中逐步执行固定范围,其中步长值在每次迭代时都会发生变化

kotlin - 使用类中的几个函数实现扩展函数 Kotlin

顶部 ActionBar 上的 Android 抽屉导航

authentication - 来自另一个文件的 React-Native react-navigation

android - 如何使用 Android Jetpack 导航组件在菜单项单击时导航到 fragment

android - 菜单项未显示在操作栏上

android - 什么是 Intent 生命周期?

android - ACTION_MEDIA_BUTTON Intent 的 BroadcastReceiver 在每次 MediaButton 单击时触发两次

Android 整洁架构用例