SharedViewModel弹出片段时不清除

问题描述 投票:0回答:1

我正在使用here之类的共享视图模型>

但是问题是,当我清除最后一个片段时,我想清除视图模型或杀死它的实例,但是当我离开使用它的最后一个片段时,它以某种方式仍然存在。

如何以编程方式清除此视图模型?

我这样使用它

片段A
private val model: SharedViewModel by activityViewModels()

    override fun onViewCreated() {

     model.getTotal().observe(viewLifecycleOwner, Observer { cartTotal ->
                total = cartTotal
            })

    }

我从片段B发送了总数

片段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()})

android android-fragments kotlin android-viewmodel android-architecture-navigation
1个回答
1
投票

如果要获取与父片段相关联的ViewModel,则内部片段应遵循by viewModels JavaDoc并使用:

© www.soinside.com 2019 - 2024. All rights reserved.