【发布时间】:2018-11-05 11:57:15
【问题描述】:
有两个片段: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 实例,因为它们接收到两个不同的片段实例。
我们如何让它返回相同的实例,以便在父片段和子片段之间共享数据?
我尝试在ChildFragmentModule 中传递ParentFragment 而不是ChildFragment,但这会导致Dagger 依赖注入错误。
【问题讨论】:
标签: android mvvm dependency-injection dagger android-viewmodel