我有个奇怪的问题。 在我的代码中,我在视图模型中观察到一个String
类型的MutableLiveData
,并将上下文显示为一个Toast。 当我在AVD中运行它时,toast被显示了不止一次,即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
})
}
代码(ViewModel):
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
})
}