In my ViewModel I have two MutableLiveData for the response of my webservice :
val getFindByCategorySuccess: MutableLiveData<List<DigitalService>> by lazy {
        MutableLiveData<List<DigitalService>>()
    }
val getFindByCategoryError: MutableLiveData<String> by lazy {
        MutableLiveData<String>()
    }
and this method for the request :
fun requestFindByCategory(categoryId: String){
        viewModelScope.launch {
            when (val retrofitPost = digitalServicesRemoteRepository.getFindByCategoryRequest(categoryId)) {
                is ApiResult.Success -> getFindByCategorySuccess.postValue(retrofitPost.data)
                is ApiResult.Error -> getFindByCategoryError.postValue(retrofitPost.exception)
            }
        }
    }
It's working fine using it in my Fragment class :
viewModel.getFindByCategorySuccess.observe(viewLifecycleOwner, { digitalServices ->
            logD("I have a good response from the webservice; luanch an other fragment now!")
        })
The problem is if I go to an other fragment in my observable (using findNavController().navigate(action)). If I go back to the previous fragment, I go automatically to the nextFragment because the observable is called again.
So I'm looking for solutions... Maybe clearing all my viewmodel when I go back to my fragment ? Maybe clearing only getFindByCategorySuccess and getFindByCategoryError ? Maybe an other solution? I think my architecture is not good. What do you think about it ?
 
                        
I found a solution to my problem using this class :
Like this :