检测导航组件中的弹出



在导航组件中,如何检测片段是否从流行事件中被带到前面?

我从 A 转到 B,现在

我使用后退键关闭 B,它返回到 A,现在在 A(在 onViewCreated 事件中(我想检测它来自 B。

如果我们使用单个 NavController。

findNavController((R.id.nav_host_fragment)
    .addOnDestinationChangedListener{ hostController, destination, _ ->
        val push = currentBackStackSize < hostController.bacStack.size // else pop
        // Then save current backstack size
  }

这个解决方案可能并不总是正确的,但目前我想不出边缘情况。请随时纠正我。

这是我

的解决方案。

在 A 中,添加默认值为 false 的导航参数(在nav_graph.xml中(

在 B 中,添加回 A 的导航。要处理按下的后退按钮,请在onCreate()中添加以下内容

requireActivity().onBackPressedDispatcher.addCallback {
        val action = BDirections.actionBFragmentAFragment(true)
        findNavController().navigate(action)
    }

现在,您可以确定 A 的显示方式。此外,使用 popUpTo 正确处理循环逻辑。如果您发现这种方法有任何缺陷,请告诉我。

相关内容

  • 没有找到相关文章

最新更新