我正在使用 Android Jetpack (2.2.0-alpha01) 的导航组件。
我希望使用一个嵌套在我的主 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.
我相信惰性初始化调用by navGraphViewModel()
正在寻找 mainGraph 中的导航图。
如何访问子 navHostFragment 范围的 ViewModel?感谢您的时间。