뷰페이저를 사용하는 프래그먼트에서 다른 프래그먼트로 이동 후 다시 돌아올 때 에러가 발생하며 어플이 꺼지는 현상을 발견했다.
어떤 이유인지 에러 내용을 살펴보니 아래와 같았는데
일단 onAttachedToRecyclerView
함수의 checkArgument
함수를 호출하는 부분에서 에러가 난다고 하니 인자값을 받는 mFragmentMaxLifecycleEnforcer
를 구글에 검색해보니 이미 이 에러를 겪은 분이 계셨고 해결방법은 출처에서 확인할 수 있었다.
출처 : https://jgeun97.tistory.com/262
뷰페이저 어댑터 객체를 지연초기화를 했기 때문에 발생한 것이라고 하는데
어댑터 객체를 지연초기화 하지 않고 onViewCreated
에서 초기화를 한 후에 뷰페이저에 어댑터를 붙여서 다시 시도해보니 문제 없이 잘 실행이 되었다!
나의 경우에는 아래와 같이 지연초기화를 했었는데
private val viewPagerAdapter by lazy {
JoinViewPagerAdapter(this)
}
이 부분을 onViewCreated
에서 뷰페이저의 어댑터를 설정하는 코드 바로 앞에서 초기화해주는 것으로 바꾸어주었다.