我的范围:
@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(模块= {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
}