您的导航图结构打破了推荐的导航模式!
但是为了您的需要,我有一种解决方法。
方法一:首先,FragmentY和FragmentZ需要有自己的deeplink。
<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>
然后,在位于 navigation_b 的 Fragment 中。我们称它为 FragmentB
// navigate to FramgmentY
val deeplinkY = Uri.parse("any-app://internal_navigation_frag_y")
findNavController().navigate(deeplinkY)
// navigate to FramgmentZ
val deeplinkZ = Uri.parse("any-app://internal_navigation_frag_z")
findNavController().navigate(deeplinkZ)
您可以将字符串存储在 string.xml 文件中any-app://internal_navigation_frag_y
。any-app://internal_navigation_frag_z
看看这个:https ://developer.android.com/guide/navigation/navigation-navigate#uri
方法2:在嵌套图navigation_B内部,定义2个全局动作,分别指向fragmentY和fragmentZ。由于navigation_B是一个NavHost,所以它会知道FragmentY和FragmnentZ
检查这个:https ://developer.android.com/guide/navigation/navigation-global-action