Пользовательская область с @ContributesAndroidInjector
Я пытаюсь поделиться той же ViewModel между различными фрагментами. Я аннотировал это с @PerFragment:
@PerFragment class LoginViewModel @Inject constructor(val authenticationApi: AuthenticationApi) : ViewModel() {
...
Я не уверен, где еще установить пользовательскую область?
В моей деятельности у меня есть этот модуль (без подкомпонента), который предоставляет мне фрагмент электронной почты, аннотированный @PerFragment:
@dagger.Module class Module {
@Provides @PerFragment fun splashEntryFragment(): SplashEntryFragment {
return SplashEntryFragment()
}
@Provides @PerFragment fun emailFragment(): EmailFragment {
return EmailFragment()
}
}
в моем фрагменте логина электронной почты у меня есть только этот модуль, который предоставляет следующий фрагмент (без подкомпонента):
@dagger.Module class Module {
@Provides @PerFragment fun passwordFragment(): PasswordFragment {
return PasswordFragment()
}
}
Все мои действия и фрагменты используют обязательные модули так:
@Module абстрактный класс ActivitiesBindingModule {
// Activities
@ContributesAndroidInjector(modules = [SplashActivity.Module::class]) abstract fun splashActivity(): SplashActivity
@ContributesAndroidInjector(modules = [MainActivity.Module::class]) abstract fun mainActivity(): MainActivity
}
@Module абстрактный класс FragmentBindingModule {
@ContributesAndroidInjector(modules = [SplashEntryFragment.Module::class]) abstract fun splashFragment(): SplashEntryFragment
@PerFragment @ContributesAndroidInjector(modules = [EmailFragment.Module::class]) abstract fun emailFragment(): EmailFragment
@PerFragment @ContributesAndroidInjector(modules = [PasswordFragment.Module::class]) abstract fun passwordFragment(): PasswordFragment
@ContributesAndroidInjector(modules = [FeedFragment.Module::class]) abstract fun feedFragment(): FeedFragment
}
Тем не менее - я получаю новый LoginViewModel для каждого фрагмента. В чем проблема?