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
728x90