java.lang.RuntimeException:无法创建类 com.dg.test.analytics.AnalyticsViewModel 的实例

java.lang.RuntimeException: Cannot create an instance of class com.dg.test.analytics.AnalyticsViewModel

提问人:shubham chouhan 提问时间:11/3/2023 最后编辑:shubham chouhan 更新时间:11/6/2023 访问量:29

问:

创建了 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 注解,检查调用位置、依赖关系等。

调试 mvvm android-jetpack-compose viewmodel

评论


答:

0赞 shubham chouhan 11/6/2023 #1

调试后,找到了原因。 由于分析是一个单独的模块,我只添加了 hilt 的基本依赖项

com.google.dagger:hilt-android

这样,其他模块中的所有进程,依赖项都将起作用。

但是分析模块缺少对 compose 和编译器的依赖关系

com.google.dagger:hilt-android-compiler
androidx.hilt:hilt-navigation-compose
androidx.hilt:hilt-work:$versions.hiltWorker

添加它们,它编译并像魅力一样工作