Я пытаюсь использовать одну и ту же 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 abstract class ActivitiesBindingModule {
// Activities
@ContributesAndroidInjector(modules = [SplashActivity.Module::class]) abstract fun splashActivity(): SplashActivity
@ContributesAndroidInjector(modules = [MainActivity.Module::class]) abstract fun mainActivity(): MainActivity
}
@Module abstract class 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 для каждого фрагмента.В чем проблема?