본문 바로가기
Android

ViewModel 처음 사용 시 일어날 수 있는 에러

by YoonTaeseong 2019. 12. 6.

이번에 MVP 패턴말고 MVVM 패턴을 사용해봐야겠다고 마음먹고 첫 MVVM 패턴을 이용한 어플리케이션을 제작하기로 했다.

MVVM패턴 이라하면은 Model, View, ViewModel 이렇게 나눠 지는데 Model 은 비즈니스 로직을 담당하고 View 는 UI 부분 ViewModel 은 View 에서 일어난 이벤트 처리하는 함수 등 여러가지가 포함되어있다.

 

 

처음 사용하던 MVVM 패턴 이었지만 MVP 패턴에서  Presenter 가 View의 상태를 아는것과 ViewModel은 View 의 상태를 모르는것 이 차이점만 있기 때문에 어렵기 않게 적용 시켜 나갔지만 ViewModel을 객체화 시키는데에서 문제가 생겼다.

 

본문 바로 아래 그림처럼 컴파일 에러는 아니지만 런타임 에서 오류가 계속 나는것이었다.

 

해당 오류는 ViewModel을 상속받은 클래스 생성자에 함수가 들어있다면 초기화 할 시 일어나는 에러라고 한다.  왜 일어나는지 알아보기 위해 상세 코드로 들어가 보았다.

본 코드는 ViewModelProvider 의 of 함수이다. 코드에 나와있듯이 factory가 정의 되어있지 않으면 생성자를 따로 넘겨주지 않는다.

 

따라서 ViewModel에 생성자가 있다면 꼭 Factory를 사용해야한다.  펙토리 사용은 다음과 같이 하였다.

이상 ViewModel 에러에 대해서 포스팅을 마치겠습니다.

댓글