【问题标题】:<identifier> expected android Hilt<标识符> 预期的 android Hilt
【发布时间】:2020-08-11 16:32:38
【问题描述】:

我想在我的应用中试用 Hilt DI

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

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

BaseFragment 很简单:

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

@Inject
lateinit var viewModel: T by viewModels()


 }

对于 viewModel by viewModels() 不工作显示错误

不能使用“T”作为具体类型参数。改用一个类。类型 'Lazy' 没有方法 'setValue(BaseFragment, KProperty, T)' 因此它不能作为 var (read-write 属性)。**

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

基础片段

感谢您帮助我并提前感谢

编辑: 在 github 上打开这个 issues,他们说这是一个错误,他们将禁止 @AndroidEntryPoint 用于具有类型参数的基类 –

【问题讨论】:

    标签: android kotlin dagger-2 dagger-hilt


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,这是一个错误,我在 github 上打开了这个 issues,他们说这是一个错误,他们将禁止 @AndroidEntryPoint 用于具有类型参数的基类
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2021-03-08
    • 2023-03-25
    相关资源
    最近更新 更多