【发布时间】:2016-03-26 08:51:59
【问题描述】:
我是 kotlin 和 Dagger 的新手。我有一个小问题,我不知道如何解决,也没有找到解决方案。
这就是我所拥有的:
@Module
class AppModule (app: Application) {
private var application: Application;
init {
this.application = app;
}
@Provides fun provideApplication(): Application? {
return application;
}
@Provides fun provideResources(): Resources? {
return application.resources;
}
}
@Singleton
@Component(modules = arrayOf(AppModule::class))
interface AppComponent: AppComponentBase {
public class Initializer {
private constructor(){}
companion object {
fun Init(app: Application): AppComponent? {
return DaggerAppComponent.builder().appModule(AppModule(app)).build()
}
}
}
}
AppComponentBase:这个接口包含了这个组件需要的所有方法。
现在,问题是如果我在companion object 中执行此DaggerAppComponent.builder().appModule(AppModule(app)).build() 调用,Dagger 不会生成此DaggerAppComponent 类。
如果调用同一行任何由companion object dagger 生成de 类没有任何问题。
我寻找解决方案的另一件事是创建另一个具有相同结构的不同类,并将DaggerAppComponent 作为内部对象导入,我也发生了同样的结果。
我没有在外面初始化组件。那么,还有其他替代解决方案,或者我做错了什么?
【问题讨论】:
-
你在 build.gradle 中有
kapt 'com.google.dagger:dagger-compiler:2.0.2'吗? -
Folwing 也可以很好地使用插件
apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt'和依赖项implementation "com.google.dagger:dagger:$dagger_version" implementation "com.google.dagger:dagger-android:$dagger_version" implementation "com.google.dagger:dagger-android-support:$dagger_version" kapt "com.google.dagger:dagger-compiler:$dagger_version" kapt "com.google.dagger:dagger-android-processor:$dagger_version"解决此问题