有两个片段:ParentFragment 和 ChildFragment。
ChildFragment
已添加到 的视图中ParentFragment
。
现在使用Dagger2
for 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
因为它们接收两个不同的片段实例。
我们如何让它返回相同的实例,以便在父片段和子片段之间共享数据?
我尝试在 中传递而ParentFragment
不是,但这会导致 Dagger 依赖注入错误。ChildFragment
ChildFragmentModule