[Android] 여러 프래그먼트에서 공유되는 ViewModel 만들기

바키찬·2022년 10월 19일
0

이 글은 여러 프래그먼트에서 하나의 ViewModel을 공유해서 사용하는 법을 기록했고
Google Codelab을 통해 학습한 내용을 정한 글 입니다.

Android에서 회원가입, 메인 페이지 등 Navigation을 사용해서 여러 프래그먼트에서
데이터를 공유해서 사용해야 할 때가 있다. 이 방법을 공부하기 위해서
Google Codelab에서 공부했다. 해당 코드랩

결론부터 💡

ViewModel은 다음과 같이 동일하게 만들어 주면 된다.

class OrderViewModel : ViewModel() {
  private val _quantity = MutableLiveData<Int>(0)
  val quantity: LiveData<Int> = _quantity
}

Fragment에서 ViewModel을 만들때 activityViewModels()을 사용해주면 된다.

class PickupFragment : Fragment() {

	private val sharedViewModel: OrderViewModel by activityViewModels()
    
	...    
}

다음과 같이 여러 프래그먼트에서 만들어줘도 접근하는건 하나의 객체에 접근한다.

class FlavorFragment : Fragment() {
	private val sharedViewModel: OrderViewModel by activityViewModels()
	...
    
    // 공유 뷰모델에서 접근 하는 법
    // sharedViewModel.quantity.value
}
profile
천재 개발자가 되고 싶어요

0개의 댓글