Я пытаюсь использовать кинжал 2 в своем приложении. Приложение имеет только MainActivity и другой фрагмент, навигация которого осуществляется компонентом навигации. Я хочу, чтобы в приложении были разные подкомпоненты, такие как AuthSubcomponent, HomeSubcomponent. Чего я хочу добиться:
@ Singleton (root компонент) с MainActivity
@ AuthSubcomponent (подкомпонент @Singleton) с TitleFragment, SignUpFragment, LoginFragment, VerificationFragment
@ HomeSubcomponent (подкомпонент @Singleton) с HomeFragment, ProfileFragment
Проблема возникает, когда мне приходится склеивать разные фрагменты вместе, чтобы они были частью одного и того же подкомпонента. Например, TitleFragment, SignUpFragment, LoginFragment и VerificationFragment должны быть частью AuthSubcomponent. Однако когда я пишу подкомпонент, следуя документации dagger2, в него может входить только один фрагмент.
Пример:
Подкомпонент
@FiScope
@Subcomponent
interface AuthSubcomponent : AndroidInjector<TitleFragment> {
@Subcomponent.Factory
interface Factory: AndroidInjector.Factory<TitleFragment>
}
ActivityModule
@Module(subcomponents = [AuthSubcomponent::class])
abstract class ActivityModule {
@ContributesAndroidInjector
abstract fun contributeMainActivity(): MainActivity
@ContributesAndroidInjector
abstract fun contributeTitleFragment(): TitleFragment
}
AppComponent
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, ActivityModule::class])
interface AppComponent {
@Component.Factory
interface Factory{
fun create(@BindsInstance application: Application): AppComponent
}
fun inject(app: BaseApplication)
fun authSubcomponent(): AuthSubcomponent.Factory
}
На этом этапе, как я могу добавить SignUpFragment, LoginFragment и VerificationFragment в AuthSubcomponent?