ViewPager 사용 시 adapter 초기화 문제

이성민·2024년 11월 21일
0

안드로이드

목록 보기
9/19

문제 발생

ViewPager 사용 시에 onBind 에서 해당 아이템 마다 리스너를 연결하고, onViewDetachedFromWindow 에서 해당 아이템에 연결된 리스너를 제거하는 방식으로 작업을 진행하고 있었다.

ViewPager를 처음 init 할 시에는 문제가 없지만 다시 갱신을 해줘야 할 때

이렇게 onViewDetachedFromWindow 가 onBind 중간에 호출되면서 연결된 리스너를 끊어버리는 문제가 발생했다.

원인 파악

작업한 코드를 살펴보던 중 갱신을 해줄때마다 adapter 를 등록해주는데 이때 기존 ViewPager 에 등록되어 있던 adapter null 처리를 해주지 않고 계속 새로운 adapter를 붙여주고 있었다. 따라서 새로운 adapter 가 붙여질 때마다 기존의 adapter 를 해제하면서 onViewDetachedFromWindow 가 호출된 것이었다.

문제 해결

ViewPager 를 사용하지 않을때 adapter = null 을 넣어주어

onViewDetachedFromWindow 를 호출시키고 다시 갱신 시에 adapter 를 붙여주면

초기화된 ViewPager 에 새로운 adapter 를 붙여주기 때문에 onBind 중간에 onViewDetachedFromWindow 가 호출되는 문제가 해결된다.

profile
Android Developer 이성민입니다

0개의 댓글