본문 바로가기
🖥 Programming/📱 Android (Kotlin)

[Android][kotlin] ViewModel 하나로 사용하기

by MinChan-Youn 2021. 12. 2.

솔직히 MVVM디자인 패턴을 처음 접하는 사람들에게는 Model, View, ViewModel과 같은 이름이 어떻게 진행되는지 정말 어려울 것으로 판단된다.

 

심지어 저도... 이게 무엇인지 아직도 찾아보는 중이니깐...

 

Activity하나에 Fragment에서 사용하는 ViewModel이 공유가 되어야 하는 상황이 생길때 정확히 이해를 하지 못하니 ViewModel이 계속 생성이 되는것처럼 보이고 데이터가 저장아 안되는것으로 판단이 되는 상황이 생겼다...

이게 뭐지하면서 삽질을 한 끝에..

 

Fragment에서 ViewModel을 생성한다고 가정해보자.

저 안에 들어가는 this는 ViewModelStoreOwner를 뜻하는데 다른 Fragment의 this를 넣어주고 있으니 계속해서 생성이 되는것이 아닌가 싶다. 

ViewModelProvider(this).get("ViewModel 클래스 이름"::class.java)

 

그렇다면 어떻게 하라는 거지? 

 

간단하다.

ViewModelStoreOwner를 Fragment의 this를 넣어주는 것이 아니라 해당되는 Activity를 대입하면 된다.

ViewModelProvider(requireActivity()).get("ViewModel 클래스 이름"::class.java)

 

 

이걸 몰라서 몇시간동안 삽질을 한듯...

 

많은 사람들에게 도움이 되었으면 좋겠다.