Просмотр переменной модели, наблюдаемой более одного раза - PullRequest
0 голосов
/ 17 июня 2020

У меня особенная проблема. В моем коде я наблюдаю MutableLiveData типа String в представлении Model и отображаю контекст как всплывающее сообщение. Когда я запускаю его в AVD , тост отображается более одного раза, то есть MutableLiveData наблюдается более одного раза. Но когда я запускаю тот же код на своем мобильном телефоне, тост отображается только один раз (работает должным образом).

Код (фрагмент):

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"
        }
}

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Вы должны убедиться, что вызываете этот метод один раз. если ваш наблюдатель для LiveData <*> не должен вызываться несколько раз. подробнее это может помочь

0 голосов
/ 17 июня 2020

Вы можете поместить наблюдателя в onActivityCreated вашего фрагмента. Это будет выглядеть примерно так:

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