如果要获取与父片段相关联的ViewModel,则内部片段应遵循by viewModels
JavaDoc并使用:
我正在使用here之类的共享视图模型>
但是问题是,当我清除最后一个片段时,我想清除视图模型或杀死它的实例,但是当我离开使用它的最后一个片段时,它以某种方式仍然存在。
如何以编程方式清除此视图模型?
我这样使用它
private val model: SharedViewModel by activityViewModels() override fun onViewCreated() { model.getTotal().observe(viewLifecycleOwner, Observer { cartTotal -> total = cartTotal }) }
我从片段B发送了总数
private val model: SharedViewModel by activityViewModels() override fun onViewCreated() { model.setTotal = 10 }
但是当将片段A留给该数据时(因为我正在使用导航组件,所以要执行popBackStack)它不会清除视图模型,而是当我再次打开片段时,数据仍然在那里]]
我怀疑viewmodel与我的Container Activity绑定在一起,而不与片段本身的生命周期绑定在一起,所以
当我碰到我的最后一个片段时,如何删除实例或清除我的viewmdel?
谢谢
我在这里使用共享视图模型,但是问题是,当我清除最后一个片段时,我想清除视图模型或杀死其实例,但是当我离开最后一个片段时,它仍然可以生存...
如果要获取与父片段相关联的ViewModel,则内部片段应遵循by viewModels
JavaDoc并使用:
by viewModels
这是说将父Fragment用作ViewModel的所有者。
((父片段在访问自己的ViewModel时将使用val viewmodel: MYViewModel by viewmodels ({requireParentFragment()})
)
如果要获取与父片段相关联的ViewModel,则内部片段应遵循by viewModels
JavaDoc并使用: