java - 在三个片段之间共享 ViewModel
问题描述
我有三个片段 A、B 和 C。B 和 C 是 A 的子片段。如何让所有三个片段共享相同的视图模型。从这篇中等文章中,这就是我应该做的:
viewModel = activity?.run {
ViewModelProviders.of(this)[SharedViewModel::class.java]
} ?: throw Exception("Invalid Activity")
}
然而,这是关于在两个片段和一个活动之间共享一个视图模型,因此在我的情况下它不能正常工作。
解决方案
你有没有尝试过这样的事情?将您的视图模型注入您的主根片段A
:
class FragmentA : Fragment() {
val viewModel: SharedViewModel by viewModels()
}
现在你应该可以像这样访问这个视图模型B
了C
:
class FragmentB : Fragment() {
val viewModel: SharedViewModel by viewModels(
ownerProducer = { this.requireParentFragment() }
)
}
推荐阅读
- javascript - 我无法在功能性 React 组件中使用带有 useEffect 的内联“if”吗?
- javascript - Java Script 按值过滤嵌套对象属性
- c# - NullableAttribute 在另一个模块中声明,需要导入 - ILRepack
- c# - Razor-pages 通过 HttpClient 使用凭据上传文件
- python - 在多索引熊猫数据框中添加每个级别 2 索引的总数
- php - Laravel 安装程序在创建新项目时抛出错误
- android - android:nextFocusDown 在 viewpager 中不起作用
- php - 在heroku中播种数据透视表导致错误
- javascript - Javascript 错误地解码 unicode
- jquery - jQuery - 使用子 div 值对父 div 进行排序不起作用