我的范围:
@Scope
@Retention
annotation class ActivityScope
AppModule:
@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
}
}
UsecaseActivityModule:
@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:错误:com.example.di.AppComponent的范围为 @Singleton可能不会引用具有不同名称的绑定 范围: @ dagger.Component(modules = {dagger.android.AndroidInjectionModule.class, com.example.di.ActivityModule.class,com.example.di.AppModule.class})
我在做什么错了?
答案 0 :(得分:0)
我没有使用@RegisterActivityScope在父模块中指定范围。
@Module
internal abstract class ActivityModule {
@RegisterActivityScope // <-- just need add this
@ContributesAndroidInjector(
modules = [
UsecaseActivityModule::class
]
)
internal abstract fun contributeUsecaseActivity(): UsecaseActivity
}