gpt4 book ai didi

当我重新输入 fragment 时,Android MutableLiveData 不断发出信号

转载 作者:行者123 更新时间:2023-12-02 11:57:44 34 4
gpt4 key购买 nike

我在导航组件中使用共享 ViewModel,而不是为每个 fragment 创建 ViewModel(主要是因为它更容易),但现在当我重新输入 fragment 并订阅该 fragment 的 ViewModel 实时数据时遇到问题,我也得到了最后的状态。

这是 ViewModel 代码:

  val apiLessonData: MutableLiveData<String>> = MutableLiveData()
fun getLessonsUserCreated() =
apiCall(MyMaybeObserver(apiLessonData))

在 MyMaybeObserver 中,我有这样的东西:

override fun onSuccess(t: T) {
apiDataObserver.postValue(t)
}

这就是我在 fragment 中观察它的方式:

private val apiAddGoalData = Observer<String> { response ->
showSnack(response)
}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
.
.
viewModel.apiAddGoalData.observe(viewLifecycleOwner, apiAddGoalData)
.
.
}

现在,当我第一次进入时,它工作正常,但我第二次打开它时,它显示了上一次的零食,如何停止而不创建它新的 View 模型?

最佳答案

以简单的方式,在观察者的 onchange 方法中获取数据后,您可以为 MutableLiveData 设置 null 。欲了解更多信息,您可以阅读这篇文章:livedata-with-snackbar-navigation-and-other-events-the-singleliveevent-case。您也可以看到这个问题也许对您有帮助:How to clear LiveData stored value?

关于当我重新输入 fragment 时,Android MutableLiveData 不断发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58465244/

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