フラグメントには、ParentFragment と ChildFragment の 2 つがあります。
ChildFragment
のビューに が追加されましたParentFragment
。
現在Dagger2
Android で使用してParentFragmentModule
いるメソッドには次のものがあります。
@Provides
fun provideViewModel(fragment: ParentFragment, myViewModelFactory: MyViewModelFactory): MyViewModel {
return ViewModelProviders.of(fragment, myViewModelFactory).get(MyViewModelImpl::class.java)
}
MyViewModelFactory、MyViewModel、MyViewModelImpl は、アプリで作成された単純な ViewModel ロジックです。
ChildFragmentModule には次のメソッドがあります。
@Provides
fun provideViewModel(fragment: ChildFragment, myViewModelFactory: MyViewModelFactory): MyViewModel {
return ViewModelProviders.of(fragment, myViewModelFactory).get(MyViewModelImpl::class.java)
}
ViewModel
これは、 2 つの異なるフラグメント インスタンスを受け取るため、明らかに の 2 つの別個のインスタンスを作成しています。
親フラグメントと子フラグメントの両方でデータを共有できるように、同じインスタンスを返すにはどうすればよいでしょうか?
ParentFragment
の代わりにを渡そうとChildFragment
しましたChildFragmentModule
が、それは Dagger 依存性注入エラーにつながります。