Patrick
Patrick

Reputation: 1665

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

Upvotes: 1

Views: 1348

Answers (2)

Mobin Yardim
Mobin Yardim

Reputation: 964

With this way that you initialized view model, view model depends on the parent activity you must use this way

private val detailViewModel: DetailViewModel by viewModels()

to your view model instance depends on your fragment instance.

Upvotes: 2

axwcode
axwcode

Reputation: 7824

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

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

Upvotes: 1

Related Questions