<identifier>预期的Android Hilt

问题描述

我想在我的应用程序中尝试Hilt DI

我已完成所有将Hilt添加到我的应用程序的步骤,但我的问题是Hilt显示My BaseFragment中的错误 说:

错误:预期 topLevelClass = BaseFragment .class ^错误:[Hilt]

BaseFragment很简单:

@AndroidEntryPoint
abstract class BaseFragment<T : ViewModel,D : ViewDataBinding>() : Fragment() {

@Inject
lateinit var viewModel: T by viewModels()


 }

并且对于viewModel 的viewModels() 不起作用,向我显示错误

不能使用'T'作为化类型参数。改用一个类。类型 '惰性'没有方法'setValue(BaseFragment ,KProperty , T)',因此它不能用作var(读写)的委托。 属性)。**

所以我像在Dagger中一样使用Factory,它可以工作,但仍然是我的问题

BaseFragment

感谢您的帮助,在此先感谢

编辑: 在github上对此issues进行操作,他们说这是一个错误,他们将禁止@AndroidEntryPoint使用具有类型参数的基类–

解决方法

正如我已经提到的here,这可能是Hilt内部的错误。

检查相关的github问题:https://github.com/google/dagger/issues/2042

您可以通过将@AndroidEntryPoint从带有参数的抽象类移到没有类型参数的子类中来解决此问题。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...