Search code examples
androidkotlinfragmentviewmodel

Use viewmodel for a fragment called twice


I have a navigation as follows:

FragmentList -> FragmentDetailA -> FragmentDetailB -> FragmentDetailC

I use a viewModel for the detail FragmentDetailViewModel

private val detailViewModel: DetailViewModel by activityViewModels()

But if I go forward, and then back, the above fragmentDetails are changed. How to have a viewmodel assigned to the fragment without changing the others?

Solution:

First of all, change activityViewModels() for viewModels()

Then, the problem was with setFragmentResultListener. It was called before instantiating the new fragment, then the call was made on Fragment A and not on Fragment B. I decided to pass data between destinations with Bundle objects.

Thanks a lot


Solution

  • It sounds like you want to link the viewmodel to the fragment.

    ViewModelProvider(this,viewModelFactory).get(MyViewModel.class)