18

フラグメントには、ParentFragment と ChildFragment の 2 つがあります。 ChildFragmentのビューに が追加されましたParentFragment

現在Dagger2Android で使用して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 依存性注入エラーにつながります。

4

4 に答える 4