【问题标题】:Dagger Hilt Android gives Error : method getActivityFactory in class DefaultViewModelFactories cannot be applied to given typesDagger Hilt Android 给出错误:类 DefaultViewModelFactories 中的方法 getActivityFactory 不能应用于给定类型
【发布时间】:2021-06-08 16:19:56
【问题描述】:

我正在做一个项目,我已经实现了 Dagger Hilt + Retrofit + Coroutine。

但是在新更新匕首的依赖后,项目无法运行。

我在使用依赖注入实现 Dagger 和 Viewmodel 的 Activity 和 Fragment 中收到此错误。在依赖更新之前,它工作正常。

这是相同的屏幕截图:

这是由 Dagger 创建的并且有错误的类:

如果有人遇到过同样的问题。我不知道我做错了什么。 我遵循了this 教程。本教程对我来说也很好用,但是更新依赖项后出现上述错误。

【问题讨论】:

    标签: android dependency-injection dagger-hilt


    【解决方案1】:

    好的,我找出问题所在。

    问题出在Dagger Hilt的官方文档here

    请参阅下面该文档的屏幕截图。

    问题出在文档代码中。他们为什么不更新官方文档真是令人沮丧!顺其自然吧……

    我们必须改变

    来自

    @HiltViewModel
    class MyViewModel @Inject constructor(
        private val mainRepository: MainRepository
    ) : ViewModel() {
    

    @HiltViewModel
    class MyViewModel @Inject constructor(
        private val mainRepository: MainRepository
    ) : ViewModel(), LifecycleObserver {
    

    他们错过了LifecycleObserver,因此我遇到了错误。

    不仅如此,

    您还应该注意,以下依赖项的版本也应该相同。

    在应用级 Gradle 中:

    implementation "com.google.dagger:hilt-android:2.35.1"
    kapt "com.google.dagger:hilt-android-compiler:2.35.1"
    

    在项目级 Gradle 中:

    classpath "com.google.dagger:hilt-android-gradle-plugin:2.35.1"
    

    【讨论】:

    • 非常感谢。我遇到的问题一模一样
    • 我遇到了同样的问题。这是因为您所说的库版本不同。无需在 viewModel 中添加 LifecycleObserver 即可工作
    【解决方案2】:

    项目级别和模块级别的依赖版本必须相同。

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 2019-03-22
      相关资源
      最近更新 更多