私の最初のグラフでは、次の手順があります。
<?xml version="1.0" encoding="utf-8"?>
<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"
Android:id="@+id/firstGraph"
app:startDestination="@id/listFragment">
<fragment
Android:id="@+id/listFragment"
Android:name="com.example.ListFragment">
<action
Android:id="@+id/action_list_to_details"
app:destination="@id/detailsFragment" />
</fragment>
<fragment
Android:id="@+id/detailsFragment"
Android:name="com.example.DetailsFragment">
</fragment>
</navigation>
_
私の2番目のグラフでは、次の手順があります。
<?xml version="1.0" encoding="utf-8"?>
<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"
Android:id="@+id/secondGraph"
app:startDestination="@id/dashboardFragment">
<include app:graph="@navigation/firstGraph" />
<fragment
Android:id="@+id/dashboardFragment"
Android:name="com.example.DashboardFragment">
<action
Android:id="@+id/action_dashboard_to_notification"
app:destination="@id/notificationFragment"/>
</fragment>
<fragment
Android:id="@+id/notificationFragment"
Android:name="com.example.NotificationsFragment">
<action
Android:id="@+id/action_notification_to_details"
app:destination="@id/firstGraph"/>
</fragment>
</navigation>
_
2番目のグラフスタックを含めて、開始先であることなく、「NotificationFragment」から「詳細フラグメント」に直接ナビゲートしたいです。
それに従って 入れ子になったグラフのドキュメント :
[ネストしたグラフ]ネストされたグラフの外側にある宛先レベルのカプセル化を提供します。ネストしたグラフ内の宛先のいずれかに直接アクセスできません。
あなたが RIを使用してナビゲートする任意の宛先には、それに1つの例外があります。
アクションまたは宛先IDを使用したナビゲーションとは異なり、宛先が表示されているかどうかにかかわらず、グラフ内の任意のURIに移動できます。現在のグラフまたは完全に異なるグラフ上の宛先の宛先に移動できます。
したがって、あなたは あなたのグラフに暗黙の深いリンクを追加する :
_<fragment
Android:id="@+id/detailsFragment"
Android:name="com.example.DetailsFragment">
<deepLink app:uri="Android-app://your.package.name/details" />
</fragment>
_
次にURIを介してその宛先に移動します。
_val uri = Uri.parse("Android-app://your.package.name/details")
navController.navigate(uri)
_
_<deepLink>
_とnavigate
が一致するものである限り、あなたのURIが何であるかは関係ありません。あなたが持っている引数はURLでエンコードされる必要があります。