创建了 ViewModel,正确进行了柄注入的活动。
但是当我在可组合项中使用视图模型时,它在运行时给出此错误
@Composable
internal fun GalleryPage(
analyticsViewModel: AnalyticsViewModel = hiltViewModel(),
无法创建 com.glance.wallpaper.analytics.AnalyticsViewModel 类的实例 在 androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.kt:204) 在 androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:324) 在 androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:306) 在 androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:280) 在 androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.kt:128) 在 dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create(HiltViewModelFactory.java:116) 在 androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:187) 在 androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:153) 在 androidx.lifecycle.viewmodel.compose.ViewModelKt.get(ViewModel.kt:215) 在 androidx.lifecycle.viewmodel.compose.ViewModelKt.get$default(ViewModel.kt:195) 在 androidx.lifecycle.viewmodel.compose.ViewModelKt.viewModel(ViewModel.kt:120) 在 com.dg.test.ui.compose.settings.GalleryPageKt.GalleryPage(GalleryPage.kt:299)
尝试调试 viewModel 注释,检查调用位置、依赖关系等。
调试后,找到原因了。 由于分析是一个单独的模块,因此我只添加了 hilt 的基本依赖项
com.google.dagger:hilt-android
这样,其他模块中的所有进程、依赖项都将起作用。
但是分析模块缺少 compose 和编译器的依赖项
com.google.dagger:hilt-android-compiler
androidx.hilt:hilt-navigation-compose
androidx.hilt:hilt-work:$versions.hiltWorker
添加它们,它的编译和工作就像一个魅力