PagerSlidingTabStripのNullPointerException
ViewPagerIndicatorからPagerSlidingTabStripに変更して使っていたら、以下のようなエラーが吐かれてしまう。
java.lang.NullPointerException at com.astuetz.PagerSlidingTabStrip$PageListener.onPageScrolled( PagerSlidingTabStrip.java:361) at android.support.v4.view.ViewPager.onPageScrolled(ViewPager.java:1712) at android.support.v4.view.ViewPager.pageScrolled(ViewPager.java:1633) at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:581) at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1600) ...
ViewPagerIndicatorを使用していた時にはでないエラーだった。 PagerSlidingTabStripのバグのようなのだが、回避方法はあった。
エラーは、PagerSlidingTabStripにセットするViewPagerの保持している配列の長さが0の時に起こるようだ。そこで、ViewPagerのArrayListの長さを確認してから、PagerSlidingTabStripにセットするようにした。
mViewPager.setAdapter(mViewPagerAdapter); PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs); if(mViewPagerAdapter.getCount() > 0){ tabs.setViewPager(mViewPager); }
抜粋だがこんな感じ。getCountは自分で作ったもので、ViewPagerAdapterの中のArrayListの長さを返す。