Пользовательская область с @ContributesAndroidInjector - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь использовать одну и ту же 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 для каждого фрагмента.В чем проблема?

...