几周前,我决定开始将现有应用程序(我用Java编写)转换为kotlin。 我只转换了一个活动,所以我想检查功能,然后再继续前进并更改所有类。 不幸的是,我收到以下错误:
output.next
这是我通过此活动解决依赖关系的方式,将从onCreate方法中调用以下代码:
SearchActivity.kt
Unresolved reference: DaggerSearchComponent
SearchComponent.java
override fun resolveDependency() {
DaggerSearchComponent.builder()
.applicationComponent(applicationComponent)
.searchModule(SearchModule(this))
.build().inject(this)
}
此活动的组件仍然是用Java编写的,尽管我尝试使用kotlin进行转换,但出现了相同的错误。
我在build.gradle(Module:app)中添加了kotlin插件
@PerActivity
@Component(modules = SearchModule.class, dependencies = ApplicationComponent.class)
public interface SearchComponent {
void inject(SearchActivity activity);
}
build.gradle(项目)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
除了在应用gradle文件中添加kotlin插件外,我没有找到任何其他有用的信息,但是它对我不起作用。
使用dagger2时是否可以在Java中使用kotlin,还是我需要在测试之前将每个组件/模块都转换为kotlin?
答案 0 :(得分:2)
确保在模块gradle中添加了这些依赖项:
implementation "com.google.dagger:dagger:$rootProject.dagger2Version"
implementation "com.google.dagger:dagger-android:$rootProject.dagger2Version"
implementation "com.google.dagger:dagger-android-support:$rootProject.dagger2Version"
kapt "com.google.dagger:dagger-android-processor:$rootProject.dagger2Version"
kapt "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
testAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
并添加
apply plugin: 'kotlin-kapt'
也可用于模块级gradle。
在SearchComponent(Kotlin)中进行更改
@PerActivity
@Component(modules = [SearchModule.class::class], dependencies = [ApplicationComponent::class])
interface SearchComponent {
fun inject(application: Application)
}