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

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

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

这是ViewModel代码:

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

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

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

这就是我在片段中的观察方式:

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

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

现在第一次输入时效果很好,但是第二次打开时,它显示了上一个时间的零食,如何停止,而不创建新的ViewModel?

android android-fragments android-livedata android-viewmodel
1个回答
0
投票

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

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