astuetz / PagerSlidingTabStrip

An interactive indicator to navigate between the different pages of a ViewPager
139 stars 44 forks source link

setViewPager is throwing NullPointerException #108

Open rodly opened 10 years ago

rodly commented 10 years ago
mTabsAdapter = new TabsAdapter(getActivity().getSupportFragmentManager());
mViewPager = (ViewPager) view.findViewById(R.id.pager);
mViewPager.setAdapter(mTabsAdapter);

mPagerSlidingTabStrip = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
mPagerSlidingTabStrip.setViewPager(mViewPager); <-- fails here
<com.astuetz.PagerSlidingTabStrip
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="48dip" />

  <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="1">
  </android.support.v4.view.ViewPager>

Any reason that might be happening? Debugging shows that the ViewPager and PagerSlidingTabStrip are getting properly instantiated. The stack trace shows that it's occurring in the notifyDataSetChanged method.

java.lang.NullPointerException
            at com.astuetz.PagerSlidingTabStrip.notifyDataSetChanged(PagerSlidingTabStrip.java:200)
            at com.astuetz.PagerSlidingTabStrip.setViewPager(PagerSlidingTabStrip.java:182)
            at com.farmlogs.app.activities.MapFragment.onCreateView(MapFragment.java:64)
            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:446)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method)
armandsar commented 10 years ago

You should override your adapters getPageTitle method because it is returning null

RemiNV commented 9 years ago

The documentation for getPageTitle states "This method may return null indicating no title for this page. The default implementation returns null.", so returning null from getPageTitle() is a valid usage, and this is a bug in the library. Default (or empty) page titles could be used to avoid this.