Android
Koin 사용 시 Activity & Fragment 간 ViewModel 공유
zerocool0713
2020. 10. 15. 17:27
반응형
class MainViewModel(override var repository: Repository) : BaseViewModel() {
...
}
뷰모델을 이렇게 선언한 후
val appModule = module {
...
viewModel { MainViewModel(get()) }
...
}
코인 모듈에서 해당 뷰모델을 추가
class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>() {
...
override val viewModel: MainViewModel by viewModel()
private lateinit var homeFragment: HomeFragment
...
}
MainActivity에서 viewModel 주입
여기서
MainActivity에 속한 HomeFragment에서 같은 뷰모델을 사용하고 싶다면
ViewModel을 HomeFragment의 생성자로 넘기던가 프레그먼트 생성 후 세팅 해주지 않고
koin의 sharedViewModel()을 사용하면 됨
class HomeFragment : BaseFragment<FragmentHomeBinding>() {
...
private val viewModel: MainViewModel by sharedViewModel()
...
}
반응형