Jetpack Navigation:任何片段都应该能够导航到任何片段

Jetpack Navigation: Any fragment should be able to navigate to any fragment

我有一个游戏流程,其中用户连续经历 6 fragments。现在增加了一些复杂性。有可能每个fragment都能被每个fragment到达。这取决于玩家的回答...

好处是不需要backstack。 IE。一旦进入 fragment,我就无法返回。

无论如何,我现在可以通过 xml<action> 将任何 fragment 连接到 nav_graph 中的任何 fragment。然而,这让我的 nav_graph 非常混乱,我有很多冗余的导航代码。此外,该解决方案的扩展非常困难。突然有10个了怎么办fragments?

我想写一个像goToNextFragment这样的函数,它可以位于关联的Activity中。因此,如果需要,每个 fragment 都可以调用 activity.goToNextFragment() 并相应地执行导航。不幸的是,我找不到执行此操作的方法。我当然可以将 nav_graph 上的新 fragment 初始化为 host。但这对我来说似乎很奇怪,可能会破坏过渡。

有没有人有想法可以帮助我?

我认为全球行动可以帮助解决您的问题。 您可以将它们放在与导航图中的片段相同的级别。 至少导航图不会那么混乱

示例:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    
    <fragment
        android:id="@+id/coolFragment"
     ...
    />
     
    <action
        android:id="@+id/coolFragmentAction"
        app:destination="@id/coolFragment" />
</navigation>

您可以在此处阅读更多相关信息: https://developer.android.com/guide/navigation/navigation-global-action