삽질도사

[안드로이드] jetpack compose HiltViewModel 사용 본문

안드로이드

[안드로이드] jetpack compose HiltViewModel 사용

전성진블로그 2023. 6. 25. 16:18

보시다시피 Cannot create an instance of class 라는 런타임 에러가 나오기 전까지는 뷰모델을 생성 할 때에,

기존에는 아래와 같이 

viewModel()을 사용했는데, 이러한 경우엔 뷰모델을 생성할 때에 hilt inject로 아무것도 안넘겨 줄때에 사용이 가능했습니다.
당연히 이 경우엔 뷰모델 생성할 시에 파라미터로 아무것도 안넘겨준다는 개념하에 작동하기 때문에 아무 문제가 없었지만,
기본적으로 뷰모델 생성시에 useCase같은 것을 inject한다던지 무언가를 전달 할 때에는 위 같은 런타임 에러가 발생합니다.

 

따라서 hiltViewModel()을 사용하면 

변경된 아래와 같이 

inject로 해당 뷰모델에 직접 무언가를 주입하려면 hiltViewModel()로 생성하면 문제가 해결됩니다.

 

hiltViewModel 과 viewModel은 생성할 시에 navbackStack과 관련된 차이점이 있다고 하는데
실제 사용시에 가장 큰 차이점과 문제해결 방법은 위 같은 예시가 가장 대표적인 것 같고, 계속 까먹어서 올립니다.