Есть два фрагмента: ParentFragment и ChildFragment.ChildFragment
было добавлено к представлению ParentFragment
.
Теперь использование Dagger2
для Android имеет ParentFragmentModule
с методом:
@Provides
fun provideViewModel(fragment: ParentFragment, myViewModelFactory: MyViewModelFactory): MyViewModel {
return ViewModelProviders.of(fragment, myViewModelFactory).get(MyViewModelImpl::class.java)
}
Где MyViewModelFactory, MyViewModelMyViewModelImpl - это простая логика ViewModel, созданная в приложении.
И у ChildFragmentModule есть метод:
@Provides
fun provideViewModel(fragment: ChildFragment, myViewModelFactory: MyViewModelFactory): MyViewModel {
return ViewModelProviders.of(fragment, myViewModelFactory).get(MyViewModelImpl::class.java)
}
Это, очевидно, создает два отдельных экземпляра ViewModel
, поскольку они получают два разныхэкземпляры фрагмента.
Как сделать так, чтобы он возвращал один и тот же экземпляр, чтобы данные могли быть разделены между фрагментами Parent и Child?
Я попытался передать ParentFragment
вместо ChildFragment
в ChildFragmentModule
, но это приводит к ошибке внедрения зависимости от кинжала.