我有三个片段A,B和C。B和C是A的子片段。我如何使所有三个片段共享同一视图模型。 从this的中篇文章中,我应该这样做:
viewModel = activity?.run {
ViewModelProviders.of(this)[SharedViewModel::class.java]
} ?: throw Exception("Invalid Activity")
}
但是,这是关于在两个片段和一个活动之间共享视图模型,因此在我的情况下无法正常工作。
答案 0 :(得分:3)
您尝试过类似的方法吗?将视图模型注入到主根片段A
中:
class FragmentA : Fragment() {
val viewModel: SharedViewModel by viewModels()
}
现在您应该能够像这样从B
和C
访问此视图模型:
class FragmentB : Fragment() {
val viewModel: SharedViewModel by viewModels(
ownerProducer = { this.requireParentFragment() }
)
}