VIewModel 사용법(activity, fragment)

장재용·2023년 10월 28일

TIL

목록 보기
30/32

뷰모델을 사용하기위해 액티비티나 프래그먼트에서 초기화 할 때
의 코드가 매번 헷갈려서
이번기회에 한번 정리해볼려고 한다.

구글에서 권장하는 방식

🏹 먼저 프래그먼트

private val viewModel: TodoViewModel by lazy {
	ViewModelProvider(
    	this
    )[TodoViewModel::class.java]
}

private val viewModel: TodoViewModel by viewModels()

🎱 마지막으로 액티비티!

private val viewModel: TodoViewModel by lazy {
    ViewModelProvider(
    	requireActivity()
    )[TodoViewModel::class.java]
}

누군가 만들어놓은 편리한 방식

🏹 프래그먼트

private val viewModel: ChatListViewModel by viewModels()

private val viewModel: ChatListViewModel by viewModels {
        ChatListViewModelFactory()
    }

private val viewModel: TodoViewModel by viewModels()

🎱 액티비티

private val viewModel: ChatListViewModel by activityViewModels()

private val viewModel: ChatListViewModel by activityviewModels {
		ChatListViewModelFactory()
}

viewModels를 사용하기 위해선 gradle에 아래 코드를 추가해야 한다.

implementation("androidx.activity:activity-ktx:1.8.0")
implementation("androidx.fragment:fragment-ktx:1.3.6")
profile
enjoy_error_message!

0개의 댓글