Android导航图,嵌套图问题

时间:2020-03-02 09:04:22

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

我希望你们一切都好。

我对导航图有问题。您可以在下图中看到该结构;

enter image description here 因此,我们有2个不同的导航图; navigation_Anavigation_B

我需要从嵌套图Fragment Y中的一个片段导航到Fragment Znavigation_B

问题是;

  • 如果我将<include>用于navigation_B,则不能将其用作NavHost
  • 如果我使用其他导航图并将其添加为如上所述的嵌套图,则无法为Fragment YFragment Z使用导航目标。

我需要将navigation_B用作NavHost,也需要能够导航到Fragment YFragment Z。我该如何实现?

谢谢!

2 个答案:

答案 0 :(得分:1)

您的导航图结构破坏了推荐的导航模式!

但是为了您的需要,我有一种解决方法。

方法1: 首先,FragmentY和FragmentZ需要拥有自己的深度链接。

(x<y or x==y)

然后,在位于Navigation_b中的片段内。我们称之为FragmentB

x<=y

不过,您可以将字符串useEffect(()=>{ console.log("Will get here anytime name changes", name); }, [name]) <fragment android:id="@+id/fragY" android:name=".FragmentY" tools:layout="@layout/frag_y> <deepLink android:id="@+id/" app:uri="any-app://internal_navigation_frag_y" /> </fragment> <fragment android:id="@+id/fragZ" android:name=".FragmentZ" tools:layout="@layout/frag_z> <deepLink android:id="@+id/dlink_frag_z" app:uri="any-app://internal_navigation_frag_z" /> </fragment> 存储在string.xml文件中。

查看以下内容:https://developer.android.com/guide/navigation/navigation-navigate#uri

方法2: 在嵌套图navigation_B内,定义两个指向fragmentY和fragmentZ的全局动作。由于navigation_B是NavHost,因此它将了解FragmentY和FragmnentZ

检查以下内容:https://developer.android.com/guide/navigation/navigation-global-action

答案 1 :(得分:0)

使用嵌套导航图时,内部图应该不了解外部图。在这种情况下,graph_B不应知道FragmentY或FragmentZ的存在。您应该做的是将graph_B的结果传递给启动它的任何人。然后在这一点上决定要去FragmentY还是FragmentZ。