I am having issues with LiveData.

I have 3 fragments A (menuFragment), B (doThingsFragment), C (displayMessageFragment).
We can move from A to B, from B to C and finally from C to A.

On the onStart method of doThingsFragment, I observe LiveData From doThingsViewModel and I move to displayMessageFragment when this value changes.

**doThingsViewModel :**

```
private var _message : MutableLiveData<String> = MutableLiveData()
var message : LiveData<String> = _message 

fun someFunction() {
    _message.value = "blablabla"
}

```

**doThingsFragment :**

```
override fun onStart() {
    super.onStart()

    mViewModel!!.message.observe(
        viewLifecycleOwner,
        Observer<String>
        {
            msg ->
            if(!msg.isNullOrEmpty() && mViewModel!!.toastType.value != null){
                val args = Bundle()
                args.putString("message", msg)

                Navigation.findNavController(requireView()).navigate(R.id.mountUnmountValidationFragment, args)
            }
        })
}

```

It works great the first time I update \_message (we go from B to C as expected).
However, when I try to move from A to B again, we go into doThingsFragment observer callback again and I move on to fragment C before fragment B is even displayed.

Since \_message value has not changed, I **expect not to trigger the observer callback everytime doThingFragment.onStart method is called...**

What am I missing ?

Thanks a lot !