我两次遇到同样的问题。
-
第一个问题是,我创建了一个新的导航文件并使用了它。从技术上讲,这应该是可行的,但我也遇到了同样的错误。
因此,我通过选择导航图中需要分组的所有片段来修复它
right-click->move to nested graph->new graph
这将产生类似这样的结果:
<navigation
android:id="@+id/checkout_graph"
app:startDestination="@id/cartFragment">
<fragment android:id="@+id/orderSummaryFragment".../>
<fragment android:id="@+id/addressFragment" .../>
<fragment android:id="@+id/paymentFragment" .../>
<fragment android:id="@+id/cartFragment" .../>
</navigation>
现在,在初始化ViewModel时,在片段内部执行以下操作
val viewModel: CheckoutViewModel by navGraphViewModels(R.id.checkout_graph)
如果需要传递viewmodel工厂(可能用于注入viewmodel),可以这样做:
val viewModel: CheckoutViewModel by navGraphViewModels(R.id.checkout_graph) { viewModelFactory }
-
第二个问题是我在初始化ViewModel时使用的Id错误。因此,请确保您正在使用当前用于初始化ViewModel的navGraph。