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()
        ...
        }

 

반응형