본문 바로가기

개발 노트/Kotlin

[Android/Kotlin] 프래그먼트간 데이터를 공유하는 ViewModel

카카오맵에서 라벨(마커)를 눌렀을때 bottomSheet가 나오는데,

마커를 눌렀을때 지역에 따라 bottomSheet의 데이터가 다르게 나왔으면 했다

 

마커를 눌렀을때 MapFragment에서 데이터를 받아오는것까지는 성공했다

그런데 그 받아온 데이터를 뿌려줄곳이 MapFragment가 아니라 BottomSheetFragment였다.

즉, 서로 다른 Fragment에서 같은 viewModel데이터를 공유해야되는 상황이였다

 

그럴땐 sharedViewModel을 사용해서 

viewModel을 선언할때 activityViewModels()로 선언하면, 서로 다른 Fragment에서 같은 viewModel데이터를 공유해서 사용할 수 있다!!!

(한쪽 프래그먼트에서는 Data를 Update하고, 다른 한 프래그먼트에서는 Observing하여 view의 변화를 주려면 sharedViewModel 사용!!!)

private val sharedMapViewModel : MapViewModel by activityViewModels()

 

 

 

어떻게해야될지 몰라서 어제 하루종일 고민했는데... 역시 직접 고민하고 삽질해봐야지 진짜 깨닫는것같다....

아직 많이 부족하군 어럅다ㅠㅠㅠ