我的范围:
@Scope
@Retention
annotation class ActivityScope
应用模块:
@Module(includes = [ActivityModule::class])
class AppModule {
@Provides
@Singleton
fun provideContext(application: Application): Context {
return application
}
@Provides
@Singleton
internal fun provideDataManager(appDataManager: AppDataManager): DataManager {
return appDataManager
}
}
用例活动模块 :
@Module
class UsecaseActivityModule {
@Provides
@RegisterActivityScope
fun provideUsecase(appDataManager: AppDataManager): UseCase =
UseCase(appDataManager)
}
@Module
internal abstract class ActivityModule {
@ContributesAndroidInjector(
modules = [
UsecaseActivityModule::class
]
)
internal abstract fun contributeUsecaseActivity(): UsecaseActivity
}
问题是我无法提供这个:
@Provides
@Singleton
fun provideContext(application: Application): Context {
return application
}
出现错误
错误:(无作用域(可能不引用作用域绑定:@Subcomponent(
bla bla bla ...
AppComponent.java:6:error: com.example.di.AppComponent 的作用域为 @Singleton不得引用具有不同 范围: @dagger。Component(modules = {dagger.android.AndroidInjectionModule.class, com.example.di.ActivityModule.class, com.example.di.AppModule.class}(
我做错了什么?
我没有在父模块中指定范围@RegisterActivityScope。
@Module
internal abstract class ActivityModule {
@RegisterActivityScope // <-- just need add this
@ContributesAndroidInjector(
modules = [
UsecaseActivityModule::class
]
)
internal abstract fun contributeUsecaseActivity(): UsecaseActivity
}