在三个片段之间共享 ViewModel
Sharing ViewModel between three fragments
我有三个片段 A、B 和 C。B 和 C 是 A 的子片段。如何让所有三个片段共享同一个视图模型。
来自this中篇文章,这是我应该做的:
viewModel = activity?.run {
ViewModelProviders.of(this)[SharedViewModel::class.java]
} ?: throw Exception("Invalid Activity")
}
但是这个是关于在两个片段和一个 activity 之间共享一个视图模型,所以它不能正常工作。
你试过这样的事情吗?将视图模型注入主根片段 A
:
class FragmentA : Fragment() {
val viewModel: SharedViewModel by viewModels()
}
现在您应该能够从 B
和 C
访问此视图模型,如下所示:
class FragmentB : Fragment() {
val viewModel: SharedViewModel by viewModels(
ownerProducer = { this.requireParentFragment() }
)
}
我有三个片段 A、B 和 C。B 和 C 是 A 的子片段。如何让所有三个片段共享同一个视图模型。 来自this中篇文章,这是我应该做的:
viewModel = activity?.run {
ViewModelProviders.of(this)[SharedViewModel::class.java]
} ?: throw Exception("Invalid Activity")
}
但是这个是关于在两个片段和一个 activity 之间共享一个视图模型,所以它不能正常工作。
你试过这样的事情吗?将视图模型注入主根片段 A
:
class FragmentA : Fragment() {
val viewModel: SharedViewModel by viewModels()
}
现在您应该能够从 B
和 C
访问此视图模型,如下所示:
class FragmentB : Fragment() {
val viewModel: SharedViewModel by viewModels(
ownerProducer = { this.requireParentFragment() }
)
}