gpt4 book ai didi

android - 使用共享 ViewModel 的多个 fragment 中的单个实时事件

转载 作者:行者123 更新时间:2023-12-04 23:45:12 32 4
gpt4 key购买 nike

我在多个 fragment 中有一个共享的 View 模型。

class MainFragment {
private val sharedViewModel: HomeActivityViewModel by activityViewModels()
}

class MagazinesFragment {
private val sharedViewModel: HomeActivityViewModel by activityViewModels()
}
我在该共享 View 模型中有一个事件。
class HomeActivityViewModel{
val userAuthStatusChanges = MutableLiveData<Boolean>()
}
我正在多个 fragment 中观察该事件。
 class MainFragment {
//...
sharedViewModel.userAuthStatusChanges.observe(viewLifecycleOwner) {
// do smth
}
}

class MagazinesFragment {
//...
sharedViewModel.userAuthStatusChanges.observe(viewLifecycleOwner) {
// do smth
}
}
每当那个 userAuthStatusChanges事件发生,我要开火 所有 fragment 中的单个实时事件正在观察该事件。
如果我将事件设为 MutableLiveData,则在重新创建 fragment 时会观察到该事件。如果我使用 SingleLiveEvent ,该事件仅被观察一次且仅在一个 fragment 中。
我希望在所有 fragment 中触发此事件,并且在每个 fragment 中仅触发一次。我正在使用导航组件。

最佳答案

你可以这样做,

private val _userAuthStatusChanges = MutableLiveData<Boolean>()
val userAuthStatusChanges: LiveData<Boolean> = _userAuthStatusChanges

fun changeStatus(value: Boolean) {
_userAuthStatusChanges.postValue(value)
}
观察实时数据,每当您想更改值时,调用 changeValue() 函数。
如果你想给出一些初始值,你可以添加 init block 。
像这样 ,
init {
_userAuthStatusChanges.postValue(false)
}

关于android - 使用共享 ViewModel 的多个 fragment 中的单个实时事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68827676/

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