無趣味な人

生まれてこの方、無趣味。ハマったものこれといって特になし。

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の長さを返す。