组件(无作用域)可能不引用作用域绑定 [英] Component (unscoped) may not reference scoped bindings
本文介绍了组件(无作用域)可能不引用作用域绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我最近开始在Kotlin中使用dagger-2.不幸的是,我无法使用sumbcomponant解决问题,并且无法理解为什么出现此gradle错误:
I've recently started using dagger-2 with kotlin. Unfortunately I have ecnountered a problem with sumbcomponants and I have trouble understanding why I get this gradle error:
...NetComponent (unscoped) may not reference scoped bindings:
@dagger.Subcomponent(modules =
{com.example.kremik.cryptodroid.di.module.NetModule.class})
@Singleton @Provides com.example.kremik.cryptodroid.data.remote.CMCService com.example.kremik.cryptodroid.di.module.NetModule.providesCMCService(retrofit2.Retrofit)
@Singleton @Provides retrofit2.Retrofit com.example.kremik.cryptodroid.di.module.NetModule.providesRetrofit()
@org.jetbrains.annotations.NotNull @Singleton @Provides com.example.kremik.cryptodroid.data.service.CurrencyDataPresenter com.example.kremik.cryptodroid.di.module.NetModule.providesCurrencyDataPresenter(com.example.kremik.cryptodroid.data.local.CurrenciesProvider, com.example.kremik.cryptodroid.ui.LivePrices.LivePricesPresenter)
Module:app
Module:app
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.kremik.cryptodroid"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
// dataBinding {
// enabled = true
// }
kapt {
generateStubs = true
}
}
dependencies {
(...)
//Dagger2
implementation 'com.google.dagger:dagger:2.11'
implementation 'com.google.dagger:dagger-android-support:2.11'
implementation 'com.google.dagger:dagger-android-processor:2.11'
kapt 'com.google.dagger:dagger-compiler:2.11'
(...)
}
NetModule: @模块 NetModule类(私有val BASE_URL:字符串){
NetModule: @Module class NetModule(private val BASE_URL: String) {
@Provides
@Singleton
fun providesCurrencyDataPresenter(provider: CurrenciesProvider,
pricesPresenter: LivePricesPresenter) =
CurrencyDataPresenter(provider, pricesPresenter)
@Provides
@Singleton
fun providesRetrofit() = Retrofit.Builder()
.baseUrl(BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build()
@Provides
@Singleton
fun providesCMCService(retrofit: Retrofit) =
retrofit.create(CMCService::class.java)
}
NetComponent:
NetComponent:
@Subcomponent(modules = arrayOf(NetModule::class))
interface NetComponent {
fun inject(service: CurrencyDownloaderService)
}
有人知道这可能是什么问题吗?
Does anyone know what could be the issue ?
推荐答案
将@Singleton与您的组件一起放置
Put @Singleton with your Component
@Singleton
@Subcomponent(modules = arrayOf(NetModule::class))
interface NetComponent {
fun inject(service: CurrencyDownloaderService)
}
这篇关于组件(无作用域)可能不引用作用域绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文