android - ViewModel 创建 2 个实例而不是 1 个
问题描述
我目前正在使用 Google 的 NavGraph 实现一个带有多个片段的 Activity 应用程序,目前我在 MainActivity 中有一个片段,其中包含一个 ViewPager2 和 2 个子片段用于选项卡
现在我有 1 个 ViewModel 包含父片段和子片段,当我初始化 ViewModel 时,不是为所有 3 个片段创建单个实例,而是每个片段有 1 个实例,我怎么只有 1 个实例?
这就是我为父片段和子片段初始化 ViewModel 的方式
paymentViewModel = ViewModelProvider(requireActivity()).get(PaymentViewModel::class.java)
如果 ViewModelProvider 已经存在而不是复制,它不应该返回已经创建的实例吗?
解决方案
这里的关键是context
传递给ViewModelProvider
' 的构造函数,所以目前你正在获取活动的 vm 提供者,它应该返回活动正在使用的实例。
所以是的,片段应该像我看到的那样工作,你是如何在活动中实例化虚拟机的?
推荐阅读
- tcl - 在全局级别在 itcl 代码中获取 tcl 文件
- java - Java for 循环和布尔数组都返回 true
- java - 正则表达式以匹配末尾有新行的文本
- android - 断开连接后收到 Android BLE 外围服务
- laravel - Heroku,访问 laravel 存储文件夹
- amazon-web-services - AWS: Execute a task after 1 year has elapsed
- python - 使用 matplotlib 创建 3d 曲面图
- scala - Scala - How to call inner class method?
- c++ - 打印输出函数 C++ 时出错
- python - 即使在等待之后,Python 中的 Selenium 也无法识别 DOM 中的变化