개발/Android
[ViewModel] Activity와 Fragment간의 ViewModel 공유
Patrick0422
2021. 12. 2. 11:09
간단한 게시판 앱을 만들면서 글 작성 페이지를 만들면서,
메인 액티비티에서 뷰 모델에 넣어놓은 유저의 토큰 값을 글 작성 프래그먼트에서는 불러오지 못하는 문제를 겪었는데, 같은 뷰 모델 클래스를 사용해 같은 객체를 사용할 것이라 생각한 게 실수였습니다.
뷰 모델을 생성할 때 모든 곳에서 by viewModels()로 받아오니 그 때마다 뷰 모델이 새로 생성되는 것으로 보입니다.
해결법은 by activityViewModels()로 부모 액티비티에 존재하는 뷰 모델을 가져오는 방식이었습니다.
부모 액티비티에서는 원래처럼 써주고
메인 액티비티의 ViewModel을 받을 Fragment에서는 by activityViewModels()로 부모 액티비티에서 생성된 뷰 모델을 받아오면 됩니다.
배운 곳: