ViewModel创建2个实例,而不是1个

问题描述

我目前正在使用Google的NavGraph来实现一个带有多个片段的Activity应用程序,此刻,我在MainActivity内部有一个片段,其中包含一个ViewPager2和2个用于选项卡的子片段

现在我有1个保存父片段和子片段的viewmodel,当我初始化viewmodel时,我没有为所有3个片段创建一个实例,而是每个片段得到1个实例,我怎么只有1个实例? / p>

这是我为父片段和子片段初始化viewmodel的方式

paymentviewmodel = viewmodelProvider(requireActivity()).get(Paymentviewmodel::class.java)

viewmodelProvider是否应该返回已经创建的实例(如果已经存在)而不是进行复制?

解决方法

这里的关键是context传递给ViewModelProvider的构造函数,因此,当前您必须要获得该活动的vm提供程序,该提供程序应返回该活动正在使用的实例。

是的,正如我所见,该代码段应该可以正常工作,您如何在活动中实例化VM?