【发布时间】:2019-10-24 16:02:17
【问题描述】:
我有一个问题,一个我无法复制的奇怪问题,但我发现很多用户都存在这个问题。崩溃发生在 Crashitycs 中。问题是:
致命异常:java.lang.NullPointerException 尝试在空对象引用上调用虚拟方法“int android.support.v4.widget.ViewDragHelper.getTouchSlop()”
目前我已将支持库设置为 28.0.0。
我不知道接下来要尝试什么,因为我不明白这个错误来自哪里,我无法重现它
final SUPPORT_LIBRARY_VERSION = '28.0.0'
// Support
implementation "com.android.support:design:$SUPPORT_LIBRARY_VERSION"
implementation "com.android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION"
implementation "com.android.support:cardview-v7:$SUPPORT_LIBRARY_VERSION"
implementation "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
implementation 'com.android.support.constraint:constraint-layout:1.1.1'
implementation "com.android.support:exifinterface:$SUPPORT_LIBRARY_VERSION"
implementation "com.android.support:support-media-compat:$SUPPORT_LIBRARY_VERSION"
implementation "com.android.support:support-v4:$SUPPORT_LIBRARY_VERSION"
这是我的 Logcat
at android.support.design.widget.BottomSheetBehavior.onTouchEvent(BottomSheetBehavior.java:350)
at android.support.design.widget.CoordinatorLayout.performIntercept(CoordinatorLayout.java:476)
at android.support.design.widget.CoordinatorLayout.onTouchEvent(CoordinatorLayout.java:527)
at android.view.View.dispatchTouchEvent(View.java:9390)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2549)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2240)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2461)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1777)
at android.app.Activity.dispatchTouchEvent(Activity.java:2865)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2422)
at android.view.View.dispatchPointerEvent(View.java:9610)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4447)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4313)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3900)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3866)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3992)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3874)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4049)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3900)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3866)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3874)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6146)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6120)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6081)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6262)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:192)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:330)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5621)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
--
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.support.v4.widget.ViewDragHelper.getTouchSlop()' on a null object reference
at android.support.design.widget.BottomSheetBehavior.onTouchEvent(BottomSheetBehavior.java:350)
at android.support.design.widget.CoordinatorLayout.performIntercept(CoordinatorLayout.java:476)
at android.support.design.widget.CoordinatorLayout.onTouchEvent(CoordinatorLayout.java:527)
at android.view.View.dispatchTouchEvent(View.java:9390)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2549)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2240)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2461)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1777)
at android.app.Activity.dispatchTouchEvent(Activity.java:2865)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2422)
at android.view.View.dispatchPointerEvent(View.java:9610)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4447)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4313)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3900)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3866)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3992)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3874)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4049)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3900)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3866)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3874)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6146)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6120)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6081)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6262)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:192)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:330)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5621)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
#0. Crashed: main
at android.support.design.widget.BottomSheetBehavior.onTouchEvent(BottomSheetBehavior.java:350)
at android.support.design.widget.CoordinatorLayout.performIntercept(CoordinatorLayout.java:476)
at android.support.design.widget.CoordinatorLayout.onTouchEvent(CoordinatorLayout.java:527)
at android.view.View.dispatchTouchEvent(View.java:9390)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2549)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2240)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2555)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2461)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1777)
at android.app.Activity.dispatchTouchEvent(Activity.java:2865)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2422)
at android.view.View.dispatchPointerEvent(View.java:9610)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4447)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4313)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3900)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3866)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3992)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3874)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4049)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3900)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3866)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3874)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3847)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6146)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6120)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6081)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6262)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:192)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:330)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5621)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)
目前我为很多片段(嗯,几乎所有片段)扩展BottomSheetDialogFragment
【问题讨论】:
-
注意潜在的亲密选民:我不相信“什么是 NullPointerException?”重复适用于这种情况,因为它是 Android SDK 的内部类的问题。在堆栈跟踪中似乎没有对 OP 应用程序的任何直接引用。
-
通过调用堆栈跟踪中的
BottomSheetBehavior来猜测,您是否在应用程序的任何位置使用BottomSheet的任何实例?如果是这样,您可以尝试拖动它,看看会发生什么? -
@MichaelDodd 是的,我确实在应用程序中使用它。其实很多。我为很多片段扩展了
BottomSheetDialogFragment。我无法复制它,我尝试拖动、单击、关闭等...,没有任何效果,我无法复制它,但我可以看到某些百分比的用户确实有这个问题
标签: java android nullpointerexception