ongakuer / CircleIndicator

A lightweight indicator like in nexus 5 launcher

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crashes when the ViewPager is empty

fahimk opened this issue · comments

commented
 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setBackgroundResource(int)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2411)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
            at android.app.ActivityThread.-wrap11(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1343)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5401)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:725)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:615)

@fahimk you forget to put color or drawable in your background resource

commented

Here is the xml that I'm using, do I need to add an additional drawable?

                    <me.relex.circleindicator.CircleIndicator
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal|bottom"
                        android:layout_marginBottom="25dp"
                        app:ci_drawable="@drawable/ci_selected"
                        app:ci_drawable_unselected="@drawable/ci_unselected"
                        app:ci_height="7dp"
                        app:ci_width="7dp"/>

@fahimk try use this one

<me.relex.circleindicator.CircleIndicator
            android:id="@+id/indicator"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|bottom"
            android:layout_marginBottom="25dp"
            app:ci_drawable="@drawable/circle_indicator"
            app:ci_drawable_unselected="@drawable/circle_indicator"
            app:ci_height="7dp"
            app:ci_width="7dp"/>

This crash doesn't have anything to do with not overriding the drawables/colours.
Although View.setBackgroundResource() in the original stacktrace was enough info, here's a slightly more detailed stacktrace:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setBackgroundResource(int)' on a null object reference
  at me.relex.circleindicator.CircleIndicator.onPageSelected(CircleIndicator.java:153)
  at me.relex.circleindicator.CircleIndicator.setViewPager(CircleIndicator.java:129)
  at com.example.app.MainActivity.onCreate(MainActivity.java:51)
  at android.app.Activity.performCreate(Activity.java:6221)

The onPageSelected() method doesn't make any null checks.
If the ViewPager adapter is empty, no child views are added, so calling getChildAt(0) will return null:

152  View currentIndicator = getChildAt(mCurrentPosition);
153  currentIndicator.setBackgroundResource(mIndicatorUnselectedBackgroundResId);
commented

Sorry. Busy working(T_T)