I have a shared viewmodel in multiple fragments.
class MainFragment {
private val sharedViewModel: HomeActivityViewModel by activityViewModels()
}
class MagazinesFragment {
private val sharedViewModel: HomeActivityViewModel by activityViewModels()
}
And I have an event within that shared view model.
class HomeActivityViewModel{
val userAuthStatusChanges = MutableLiveData<Boolean>()
}
And I am observing that event in multiple fragments.
class MainFragment {
//...
sharedViewModel.userAuthStatusChanges.observe(viewLifecycleOwner) {
// do smth
}
}
class MagazinesFragment {
//...
sharedViewModel.userAuthStatusChanges.observe(viewLifecycleOwner) {
// do smth
}
}
Whenever that userAuthStatusChanges
event happens, I want to fire single live event in all fragments that are observing that event.
If I make the event MutableLiveData, the event gets observed whenever fragment is recreated. If I use SingleLiveEvent, the event gets observed only one time and only in one fragment.
I want this event triggered in all fragments and only one time in each fragment. I am using navigation component.