I have an Activity, and it will turn to the fragment-A and then turn to the fragment-B like the following.
Activity -> Fragment-A -> Fragment-B>
You are observing the LiveData correctly, it is how the Event class is designed.
When you do
viewModel.responseData.observe(this, Observer {
it.getContentIfNotHandled()?.let {
showSnackBar(it)
}
getContentIfNotHandled will return content only once until there is a new value set again. If FragmentA consumes this first FragmentB will not be able to consume the same value. This is the reason peekContent works since it will always return the current value even though the event has been consumed.
If there is a solid reason where you need to show this Snackbar msg in both fragments I suggest you observe on different LiveData instances for each fragment.
You could do this by returning a new LiveData everytime viewModel.getResponseData() is invoked.