【问题标题】:Kotlin - Unresolved reference: Dagger{Name}ComponentKotlin - 未解决的参考:Dagger{Name}Component
【发布时间】:2018-08-07 17:02:10
【问题描述】:

我正在学习如何使用 Dagger 2MVP 架构。

但我现在陷入了这个错误:

未解决的参考:DaggerHelloComponent

看,这是我的模块:

@Module
class HelloModule {
    lateinit var activityDagger: HelloActivityDagger

    constructor(activityDagger: HelloActivityDagger) {
        this.activityDagger = activityDagger
    }

    @Provides
    fun providesHelloPresenter(): HelloActivityPresenterDagger = HelloActivityPresenterDagger(activityDagger)
}

和我的组件:

@Component(modules = [HelloModule::class])
interface HelloComponent {
    fun inject(activityDagger: HelloActivityDagger)
}

所以当我尝试在我的DaggerHelloComponent.create().inject(this) 中构建这个组件时,我的HelloActivityDagger 显示了上面的错误。

有人知道我做错了什么吗?

因为我可以看到这段代码有什么问题。

哦,我已经从这个问题Unresolved reference DaggerApplicationComponent 中关注了这个kapt 的事情,但没有任何反应

编辑

为了更具可读性,我已将我的项目上传到 Git。 https://github.com/luangs7/DaggerMvpExample

【问题讨论】:

  • 你在配置kapt之后构建你的项目了吗?您的第一次构建当然会失败,但它应该生成 Dagger 类供您从那里导入和使用。
  • 是的,我已经多次重建项目
  • 有没有添加apply plugin: 'kotlin-kapt',因为 kapt 在默认 gradle 中已被弃用。因此,您需要添加提到的插件才能使 kapt 正常工作。
  • 只是在这个问题上添加一个小注释,记得检查你的应用程序中你有@Inject 的任何地方。请注意,您不能注入私有字段。如果您有@Inject private lateinit var ...,即使您的组件和模块已正确设置,您也会遇到此错误。

标签: kotlin dagger-2


【解决方案1】:

将此代码放在 MyApplication 类中可以让我从您的 GitHub 项目开始创建模块 - 在第一次构建失败后,kapt 生成 DaggerHelloComponent 类,我可以导入它。

import android.app.Application
import br.com.squarebits.mvpexample.DaggerMvp.componentes.DaggerHelloComponent
import br.com.squarebits.mvpexample.DaggerMvp.componentes.HelloComponent
import br.com.squarebits.mvpexample.DaggerMvp.modules.HelloModule

class MyApplication : Application() {

    val component: HelloComponent by lazy {
        DaggerHelloComponent.builder()
                .helloModule(HelloModule(HelloActivityDagger()))
                .build()
    }

}

如果这根本没有发生,您应该尝试使用File -> Invalidate Caches / Restart 重新启动 Studio、清理和重建项目等常规调试步骤。也许尝试将 GitHub 存储库拉到新位置,看看是否适合你 - 代码不是问题。

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 2016-11-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2018-10-16
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多