查看多次观察的模型变量



我遇到了一个特殊的问题。在我的代码中,我在视图模型中观察到String类型的MutableLiveData,并将上下文显示为 Toast。当我在AVD中运行它时,吐司被多次显示,即MutableLiveData被多次观察到。但是,当我在手机中运行相同的代码时,toast 只显示一次(按预期工作(。

代码(片段(:

if(!viewModel.messageDisplayed) {
viewModel.MessageStatus.observe(viewLifecycleOwner, Observer {
it.toast(context)
viewModel.messageDisplayed = true // I'm using this variable to avoid displaying the toast multiple 
//times but it does not work in the emulator 
})
}

代码(视图模型(:

val MessageStatus = MutableLiveData<String>()
fun fireStoreOperations(){
//fireStore Operations
.addOnSuccessListener{
messageDisplayed= False
MessageStatus.value = "Message to be displayed"
}
}

您可以将观察者放在片段的onActivityCreated中。所以它看起来像

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
viewModel.MessageStatus.observe(viewLifecycleOwner, Observer {
it.toast(context)
viewModel.messageDisplayed = true 
})
}

您必须检查是否调用了此方法一次。 如果不应多次调用 LiveData<*> 的观察器。 了解更多详情 这可以提供帮助

相关内容

  • 没有找到相关文章

最新更新