Я новичок в Dagger, поэтому мне кое-что еще трудно понять.
У меня есть компонент:
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
AndroidSupportInjectionModule::class,
AppModule::class,
AuthModule::class
]
)
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(app: Application): Builder
@BindsInstance
fun appModule(@Named("application") app:Application): Builder
fun build(): AppComponent
}
fun inject(application: CommonApplication)
}
и модуль:
@Module
class AppModule {
@Inject
@Named("application")
internal lateinit var application: Application
@Provides
@Singleton
fun provideApplicationContext() = application.applicationContext
@Provides
@Singleton
fun provideApplication() = application
}
В Activity, где я хочу внедрить зависимости, я использую
AndroidSupportInjection.inject(this/*activity*/)
А вот и вопрос:
Просто для понимания.Если я хочу внедрить applicationContext
, это обеспечивает AppModule в дочерний класс.Например, у меня есть класс MainActivity с дочерним классом.И я хочу внедрить applicationContext только этому дочернему элементу, вместо передачи его в качестве параметра. Как это сделать?
class MainActivity {
ChildClazz child;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AndroidSupportInjection.inject(this/*activity*/)
}
}
class ChildClazz {
/* HOW TO INJECT DEPENDENCY HERE?*/
@Inject
context:Context
}