2015-09-13 52 views
0

在片段中,我使用ViewPager並設置當前項目。ViewPager.OnPageChangeListener給出錯誤的位置

mViewPager.setCurrentItem(5); 
mViewPager.setAdapter(someAdapter); 
mViewPager.addOnPageChangeListener(this); 

現在,OnPageChangeListener的方法「使用onPageSelected(INT位置)」是不給當前位置值4或6,但給人1.我想如果當前位置被設置爲10,則位置參數給予11.

回答

1

您正在編寫正確的代碼,但編寫的順序不正確。

mViewPager.setAdapter(someAdapter); 
mViewPager.setCurrentItem(5); 
mViewPager.addOnPageChangeListener(this); 

,你應該首先設置adapter然後告訴在ViewPager要加載的位置。

1

只有在致電setAdapter()之後,您纔可以致電setCurrentItem()等待viewpager完成加載。似乎沒有適當的方式來做到這一點。一個黑客是調用setCurrentItem()之前等待幾毫秒 -

參考:Android ViewPager setCurrentItem not working after onResume

另一種方法是調用setCurrentItem()OnLayoutChangeListener -

https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&groupby=&sort=&id=75309