728x90

 

메뉴는 한번 만들어놓으면 대체로 초기에 설정하는걸 까먹는데, 이것도 가끔씩 오래간만에 사용하려고 하면 까먹어서 메모.

 

 

- ViewPager 사용시 페이지를 넘기는데, 갑자기 에러가 나타나는 경우는 여러가지 경우의 수가 있다.

  그 중, instantiateItem에서 IndexOutOfBounds exception이 뜰 경우는

  심플하게 생각하면, ViewPager한테 화면을 얼마나 띄워야하는지 미리 안알려줘서 그렇다.

 

 

방안 1. setOffScreePageLimit 메소드 사용

viewpager.setOffscreenPageLimit(페이지수 int값);  

 

limit을 미리 걸어두면, instantiateItem에서 단순하게

(ViewGroup) container.addView(view, position); 으로 사용해도 에러가 나지 않는다.

 

 

 

방안 2. instantiateItem에서 addView할 때 조건 걸기

((ViewPager)container).addView(view, ((ViewPager)container).getChildCount() > position ? position : ((ViewPager)container).getChildCount())

 

ViewPager가 가지고 있는 자녀의 수가 position값보다 큰 지를 판별해서, index가 초과하지 않도록 하는 방법.

 

 

(미리 알 수 있으면) 개인적으로 2번보단 1번이 간결하고 편한 거 같음.

 

 

 

 

Reference

https://stackoverflow.com/questions/9402970/android-viewpager-throwing-indexoutofbounds-exception-when-setting-current-item

728x90

+ Recent posts