【发布时间】:2018-08-07 17:02:10
【问题描述】:
我正在学习如何使用 Dagger 2 和 MVP 架构。
但我现在陷入了这个错误:
未解决的参考: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 ...,即使您的组件和模块已正确设置,您也会遇到此错误。