<identifier> 预期 android Hilt

Ayo*_*hia 3 android kotlin dagger-2 dagger-hilt

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

\n

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

\n

错误:预期\ntopLevelClass = BaseFragment<T, D>.class ^错误:[Hilt]

\n

BaseFragment 很简单:

\n
@AndroidEntryPoint\nabstract class BaseFragment<T : ViewModel,D : ViewDataBinding>() : Fragment() {\n\n@Inject\nlateinit var viewModel: T by viewModels()\n\n\n }\n
Run Code Online (Sandbox Code Playgroud)\n

对于 viewModel by viewModels() 不起作用,显示错误

\n
\n

无法使用 \'T\' 作为具体化类型参数。使用类来代替。Type\n\'Lazy\' 没有方法 \'setValue(BaseFragment<T, D>, KProperty<*>,\nT)\',因此它不能充当 var(读写属性)的委托。 **

\n
\n

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

\n

基础片段

\n

感谢您帮助我并提前致谢

\n

编辑: \noppen 这个问题在 github 上,他们说这是一个错误,他们将禁止带有类型参数 \xe2\x80\x93 的基类的 @AndroidEntryPoint

\n

小智 5

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

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

您可以通过@AndroidEntryPoint从带参数的抽象类移至不带类型参数的子类来解决此问题。