首页 > 解决方案 > 检测导航组件中的弹出

问题描述

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

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

标签: androidnavigationandroid-architecture-navigationnavigation-architecture

解决方案


这是我的解决方案。

在 A 中,添加一个具有默认值的导航参数false(在 nav_graph.xml 中)

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

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

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


推荐阅读