나만 보는 일기장

[ViewModel] Activity와 Fragment간의 ViewModel 공유 본문

개발/Android

[ViewModel] Activity와 Fragment간의 ViewModel 공유

Patrick0422 2021. 12. 2. 11:09

간단한 게시판 앱을 만들면서 글 작성 페이지를 만들면서,

메인 액티비티에서 뷰 모델에 넣어놓은 유저의 토큰 값을 글 작성 프래그먼트에서는 불러오지 못하는 문제를 겪었는데, 같은 뷰 모델 클래스를 사용해 같은 객체를 사용할 것이라 생각한 게 실수였습니다.

뷰 모델을 생성할 때 모든 곳에서 by viewModels()로 받아오니 그 때마다 뷰 모델이 새로 생성되는 것으로 보입니다.

 

해결법은 by activityViewModels()로 부모 액티비티에 존재하는 뷰 모델을 가져오는 방식이었습니다.

부모 액티비티에서는 원래처럼 써주고

메인 액티비티의 ViewModel을 받을 Fragment에서는 by activityViewModels()로 부모 액티비티에서 생성된 뷰 모델을 받아오면 됩니다.

 

 

배운 곳:

 

[Android] ViewModel 에서 Activity, Fragment 데이터 공유하기

액티비티 위에 프래그먼트가 띄워져있는 상태에서 액티비티에서 인터넷 통신하여 받아온 데이터를 프래그먼트에서 옵저버로 관찰하여 사용하려고 한다. 하지만 그런 경우에 각각 뷰모델을 선

hanyeop.tistory.com

 

Comments