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

时间:2021-01-19 17:05:20

标签: android kotlin android-fragments android-jetpack-navigation

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

好消息是,不需要backstack。 IE。一旦进入fragment,我就无法回去。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

示例:

<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