Ami*_*ian 5 android android-fragments android-livedata android-viewmodel
我在 Navigation 组件中使用共享 ViewModel 而不是为每个片段创建一个 ViewModel(主要是因为它更容易)但是现在当我重新输入片段并订阅该片段的 ViewModel 实时数据时出现问题,我得到最后状态也太。
这是 ViewModel 代码:
val apiLessonData: MutableLiveData<String>> = MutableLiveData()
fun getLessonsUserCreated() =
apiCall(MyMaybeObserver(apiLessonData))
Run Code Online (Sandbox Code Playgroud)
在 MyMaybeObserver 中,我有这样的事情:
override fun onSuccess(t: T) {
apiDataObserver.postValue(t)
}
Run Code Online (Sandbox Code Playgroud)
这就是我在片段中观察它的方式:
private val apiAddGoalData = Observer<String> { response ->
showSnack(response)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
.
.
viewModel.apiAddGoalData.observe(viewLifecycleOwner, apiAddGoalData)
.
.
}
Run Code Online (Sandbox Code Playgroud)
现在当我第一次进入它工作正常但我第二次打开它时,它显示了上一次的小吃,如何在不创建新的 ViewModel 的情况下停止它?
以简单的方式,您可以在观察者方法MutableLiveData
中获取数据后为您设置 null 。onchange
有关更多信息,您可以阅读这篇文章:livedata-with-snackbar-navigation-and-other-events-the-singleliveevent-case
。您还可以看到这个问题也许对您有帮助:How to Clear LiveData storage value?
归档时间: |
|
查看次数: |
954 次 |
最近记录: |