Android Jetpack (2.2.0-alpha01) のナビゲーション コンポーネントを使用しています。
独自の子 nav グラフを備えた、メインの NavHostFragment 内にネストされた子 NavHostFragment を使用したいと考えています。コンテキストについては、次の画像をご覧ください。
子ナビゲーション ホストは、MainNavHost のスタックの先頭にあるフラグメント内で次のように定義されます。
<fragment
android:id="@+id/childNavHostFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="false"
app:navGraph="@navigation/child_graph" />
CHILD Nav Host Fragment の先頭にあるフラグメント内で、次のコードを使用して、R.navigation.child_graph をスコープとする ViewModel を取得しようとしています。
private val childGraphScopedViewModel: ChildGraphScopedViewModel by navGraphViewModels(R.navigation.child_graph) {
viewModelFactory
}
childGraphScopedViewModel にアクセスすると、クラッシュして次のエラー メッセージが表示されます。
java.lang.IllegalArgumentException: No NavGraph with ID 2131689472 is on the NavController's back stack.
怠惰な init 呼び出しby navGraphViewModel()
は、mainGraph 内の navgraph を探していると思います。
子 navHostFragment スコープの ViewModel にアクセスするにはどうすればよいですか? お時間をいただきありがとうございます。