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)
My implementation of these charts are all null safe, but for some reason it crashes on several devices. Logs looks 90% similar.