210202

[LiveData] Fragment간 ViewModel 공유 시 LiveData의 값이 안바뀌는 현상 본문

Android

[LiveData] Fragment간 ViewModel 공유 시 LiveData의 값이 안바뀌는 현상

dev210202 2021. 4. 4. 12:16

Fragment간에 ViewModel 공유 시 LiveData의 값이 안바뀌는 경우를 경험해서 이를 어떻게 해결하는지 적어본다.

나는 ViewModel을 생성할때 ViewModelProvider(this).get(~)로 그냥 넘겼었는데 이렇게하면 ViewModel의 인스턴스를 생성할 때 각기 다른 ViewModel로 생성된다는걸 모르고있었다. 그래서 이름은 같은 ViewModel의 LiveData에 값을 넣었지만 인스턴스는 다르기때문에 값이 제대로 들어가지 않았다.

Fragment 사용시에는 ViewModel의 인스턴스를 생성할때 다음과 같이 생성해야 같은 인스턴스로 ViewModel을 사용할 수 있다.

 

ViewModelProvider(requireActivity().viewModelStore).get(~)

 

 

Comments