emilsjolander/StickyScrollViewItems

Crash inside StickyScrollView

Opened this issue · 4 comments

ylogx commented

Got the following NPE inside the library

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getTop()' on a null object reference
       at com.emilsjolander.components.StickyScrollViewItems.StickyScrollView.getTopForViewRelativeOnlyChild(StickyScrollView.java:130)
       at com.emilsjolander.components.StickyScrollViewItems.StickyScrollView.onTouchEvent(StickyScrollView.java:262)
       at android.view.View.dispatchTouchEvent(View.java:8476)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2401)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2092)
       at com.emilsjolander.components.StickyScrollViewItems.StickyScrollView.dispatchTouchEvent(StickyScrollView.java:254)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
       at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2369)
       at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1719)
       at android.app.Activity.dispatchTouchEvent(Activity.java:2752)
       at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
       at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
       at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2330)
       at android.view.View.dispatchPointerEvent(View.java:8671)
       at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4193)
       at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4059)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3657)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3623)
       at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3740)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3631)
       at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3797)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3657)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3623)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3631)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
       at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5912)
       at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5851)
       at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5822)
       at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6002)
       at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:192)
       at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java)
       at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:183)
       at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5973)
       at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:6025)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
       at android.view.Choreographer.doCallbacks(Choreographer.java:580)
       at android.view.Choreographer.doFrame(Choreographer.java:548)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
       at android.os.Handler.handleCallback(Handler.java:746)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5343)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:702)

any fix for this ?

Any ETA on fixing this?

Is there any fix for this yet?

Not the best fix, but I've added if (v == null || v.getParent() == null) return 0; check to private int getTopForViewRelativeOnlyChild(View v) and also for Left|Right|Bottom. Worked for me.