ViewPager2 Adapter 에러 java.lang.IllegalArgumentException at androidx.core.util.Preconditions.checkArgument(Preconditions.java:37)

MSU·2024년 5월 30일
0

에러케이스

목록 보기
6/12

뷰페이저를 사용하는 프래그먼트에서 다른 프래그먼트로 이동 후 다시 돌아올 때 에러가 발생하며 어플이 꺼지는 현상을 발견했다.

어떤 이유인지 에러 내용을 살펴보니 아래와 같았는데

일단 onAttachedToRecyclerView 함수의 checkArgument함수를 호출하는 부분에서 에러가 난다고 하니 인자값을 받는 mFragmentMaxLifecycleEnforcer 를 구글에 검색해보니 이미 이 에러를 겪은 분이 계셨고 해결방법은 출처에서 확인할 수 있었다.

출처 : https://jgeun97.tistory.com/262

뷰페이저 어댑터 객체를 지연초기화를 했기 때문에 발생한 것이라고 하는데
어댑터 객체를 지연초기화 하지 않고 onViewCreated에서 초기화를 한 후에 뷰페이저에 어댑터를 붙여서 다시 시도해보니 문제 없이 잘 실행이 되었다!

나의 경우에는 아래와 같이 지연초기화를 했었는데

    private val viewPagerAdapter by lazy {
        JoinViewPagerAdapter(this)
    }

이 부분을 onViewCreated에서 뷰페이저의 어댑터를 설정하는 코드 바로 앞에서 초기화해주는 것으로 바꾸어주었다.

profile
안드로이드공부

0개의 댓글