gpt4 book ai didi

android - 弹出 fragment 时 SharedViewModel 未清除

转载 作者:行者123 更新时间:2023-12-02 13:32:22 26 4
gpt4 key购买 nike

我正在使用共享 View 模型,例如 here

但问题是,当我清除我的最后一个 fragment 时,我想清除 View 模型,或者杀死它的实例,但是当我离开使用它的最后一个 fragment 时它以某种方式幸存下来

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

我这样用

fragment A

private val model: SharedViewModel by activityViewModels()

override fun onViewCreated() {

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

}

从 fragment B 我发送了总数

fragment B
private val model: SharedViewModel by activityViewModels()

override fun onViewCreated() {

model.setTotal = 10
}

但是,当使用该数据离开 Fragment A 时(因为我使用导航组件而执行 popBackStack)它不会清除 View 模型,而是当我再次打开我的 fragment 时,数据仍然存在

我怀疑 View 模型与我的容器 Activity 相关联,而不是 fragment 本身的生命周期,所以

当我点击最后一个 fragment 时,如何删除实例或清除我的 viewmdel?

谢谢

最佳答案

如果你想获得一个与父 fragment 关联的 ViewModel,你的内部 fragment 应该遵循 by viewModels JavaDoc并使用:

val viewmodel: MYViewModel by viewmodels ({requireParentFragment()})

这表示使用父 fragment 作为 ViewModel 的所有者。

(父 fragment 将使用 by viewModels() 因为它正在访问自己的 ViewModel)

关于android - 弹出 fragment 时 SharedViewModel 未清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60697798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com