몇가지 방법이 있을 수 있는데, 님이 사용하는 앱 아키텍쳐에 따라 솔루션이 달라질 수 있습니다.
코틀린과 Jetpack 을 사용하신다면 FragmentKtx를 사용하셔서 데이터를 공유하실 수 있습니다.
activityViewModels()를 통해 같은 ViewModel을 사용할 수 있습니다.
FragmentKtx를 사용하실 수 없더라도 Jektpack ViewModel을 상요하실 수 있다면, Activity에 ViewModel를 생성하고 이 ViewModel를 프레그먼트에서 공유해서 사용하실 수 있겠죠.
interface ActivityListener {
fun findViewModel(): MyViewModel
}
class ParentActivity: ActivityListener {
private val viewModel: MyViewModel ...
override fun findViewModel(): MyViewModel {
return viewModel
}
}
class FragmentA {
private var sharedViewModel: MyViewModel? = null
override fun onAttach(context: Context) {
(context as? ActivityListener)?.apply {
sharedViewModel = findViewModel()
}
}
}
다른 방법으로는 Fragment API를 사용하시면 프레그먼트 간에 메세지를 주고받을 수 있습니다.
RxJava 를 사용하신다면 PublishSubject를 이용하여 메세지 교환이 가능합니다.