일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- imageview
- Gradle
- Binding Adapter
- nav_graph
- themes.xml
- Datastore
- kotlin
- recyclerview
- BottomNavigationView
- 개발자
- Safe Args
- fragment
- 일렉트론
- Navigation Component
- asLiveData()
- TypeConverter
- Android
- android studio
- 취업
- Livedata
- 면접
- 스플래시
- electron
- room
- Jetpack Compose
- 테마
- ViewModel
- hilt
- 안드로이드
- 주석
Archives
- Today
- Total
나만 보는 일기장
[ViewModel] Activity와 Fragment간의 ViewModel 공유 본문
간단한 게시판 앱을 만들면서 글 작성 페이지를 만들면서,
메인 액티비티에서 뷰 모델에 넣어놓은 유저의 토큰 값을 글 작성 프래그먼트에서는 불러오지 못하는 문제를 겪었는데, 같은 뷰 모델 클래스를 사용해 같은 객체를 사용할 것이라 생각한 게 실수였습니다.
뷰 모델을 생성할 때 모든 곳에서 by viewModels()로 받아오니 그 때마다 뷰 모델이 새로 생성되는 것으로 보입니다.
해결법은 by activityViewModels()로 부모 액티비티에 존재하는 뷰 모델을 가져오는 방식이었습니다.
부모 액티비티에서는 원래처럼 써주고
메인 액티비티의 ViewModel을 받을 Fragment에서는 by activityViewModels()로 부모 액티비티에서 생성된 뷰 모델을 받아오면 됩니다.
배운 곳:
'개발 > Android' 카테고리의 다른 글
Comments