我希望你们一切都好。
我对导航图有问题。您可以在下图中看到该结构;
因此,我们有2个不同的导航图; navigation_A
和navigation_B
。
我需要从嵌套图Fragment Y
中的一个片段导航到Fragment Z
和navigation_B
。
问题是;
<include>
用于navigation_B
,则不能将其用作NavHost
。 Fragment Y
或Fragment Z
使用导航目标。 我需要将navigation_B
用作NavHost
,也需要能够导航到Fragment Y
和Fragment Z
。我该如何实现?
谢谢!
答案 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。