<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从带有参数的抽象类移到没有类型参数的子类中来解决此问题。