AppDevNext / AndroidChart

A fork from dead upstream with a lot of merged pull requests from upstream. Including Espresso tests and screenshot tests
Other
102 stars 15 forks source link

NPE on getEntryCount(), seems related to library it self #264

Closed Paget96 closed 1 month ago

Paget96 commented 1 month ago

My implementation of these charts are all null safe, but for some reason it crashes on several devices. Logs looks 90% similar.

 Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int com.github.mikephil.charting.data.ChartData.getEntryCount()' on a null object reference
       at com.github.mikephil.charting.charts.PieChart.getAccessibilityDescription(PieChart.java:812)
       at com.github.mikephil.charting.charts.Chart.dispatchPopulateAccessibilityEvent(Chart.java:1690)
       at android.view.ViewGroup.dispatchPopulateAccessibilityEventInternal(ViewGroup.java:3755)
       at android.view.View.dispatchPopulateAccessibilityEvent(View.java:9085)
       at android.view.ViewGroup.dispatchPopulateAccessibilityEventInternal(ViewGroup.java:3755)
       at android.view.View$AccessibilityDelegate.dispatchPopulateAccessibilityEvent(View.java:33264)
       at androidx.core.view.AccessibilityDelegateCompat.dispatchPopulateAccessibilityEvent(AccessibilityDelegateCompat.java:219)
       at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.dispatchPopulateAccessibilityEvent(AccessibilityDelegateCompat.java:73)
       at android.view.View.dispatchPopulateAccessibilityEvent(View.java:9083)
       at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:9001)
       at android.view.View$AccessibilityDelegate.sendAccessibilityEventUnchecked(View.java:33242)
       at androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:197)
       at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEventUnchecked(AccessibilityDelegateCompat.java:115)
       at android.view.View.sendAccessibilityEventUnchecked(View.java:8975)
       at android.view.View.sendAccessibilityEventInternal(View.java:8954)
       at android.view.View$AccessibilityDelegate.sendAccessibilityEvent(View.java:33198)
       at androidx.core.view.AccessibilityDelegateCompat.sendAccessibilityEvent(AccessibilityDelegateCompat.java:174)
       at androidx.core.view.AccessibilityDelegateCompat$AccessibilityDelegateAdapter.sendAccessibilityEvent(AccessibilityDelegateCompat.java:110)
       at android.view.View.sendAccessibilityEvent(View.java:8904)
       at android.view.View.sendAccessibilityHoverEvent(View.java:14792)
       at android.view.View.onHoverEvent(View.java:17751)
       at android.view.View.dispatchHoverEvent(View.java:16423)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2298)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2207)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2215)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at android.view.ViewGroup.dispatchTransformedGenericPointerEvent(ViewGroup.java:2626)
       at android.view.ViewGroup.dispatchHoverEvent(ViewGroup.java:2223)
       at android.view.View.dispatchGenericMotionEvent(View.java:16340)
       at com.android.internal.policy.DecorView.superDispatchGenericMotionEvent(DecorView.java:784)
       at com.android.internal.policy.PhoneWindow.superDispatchGenericMotionEvent(PhoneWindow.java:1977)
       at android.app.Activity.dispatchGenericMotionEvent(Activity.java:4588)
       at androidx.appcompat.view.WindowCallbackWrapper.dispatchGenericMotionEvent(WindowCallbackWrapper.java:79)
       at com.android.internal.policy.DecorView.dispatchGenericMotionEvent(DecorView.java:748)
       at android.view.View.dispatchPointerEvent(View.java:16491)
       at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:8602)
       at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:8353)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7682)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7739)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7705)
       at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:7908)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7713)
       at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:7965)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7686)
       at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:7739)
       at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:7705)
       at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:7713)
       at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:7686)
       at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:11250)
       at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:11119)
       at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:11075)
       at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:11384)
       at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:337)
       at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(InputEventReceiver.java)
       at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:281)
       at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:11333)
       at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:11479)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1689)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1698)
       at android.view.Choreographer.doCallbacks(Choreographer.java:1153)
       at android.view.Choreographer.doFrame(Choreographer.java:1064)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1646)
       at android.os.Handler.handleCallback(Handler.java:958)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:230)
       at android.os.Looper.loop(Looper.java:319)
       at android.app.ActivityThread.main(ActivityThread.java:8919)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
hannesa2 commented 1 month ago

This is all Java and not null-safe 🥲

hannesa2 commented 1 month ago

Here you go https://github.com/AppDevNext/AndroidChart/releases/tag/3.1.0.24

Paget96 commented 1 month ago

Thanks for the fix :)