I have a random crash on my application, and look they are on android internal code. One is:
java.lang.IllegalArgumentException: Only TabItem instances can be added to TabLayout
at com.google.android.material.tabs.TabLayout.addViewInternal(TabLayout.java:1606)
at com.google.android.material.tabs.TabLayout.addView(TabLayout.java:1589)
at android.transition.TransitionUtils.createViewBitmap(TransitionUtils.java:192)
at android.transition.TransitionUtils.copyViewImage(TransitionUtils.java:103)
and the other
java.lang.IllegalStateException: ViewPager2 does not support direct child views
at androidx.viewpager2.widget.ViewPager2.onViewAdded(ViewPager2.java:489)
at android.view.ViewGroup.dispatchViewAdded(ViewGroup.java:5937)
at android.view.ViewGroup.addViewInner(ViewGroup.java:6119)
at android.view.ViewGroup.addView(ViewGroup.java:5884)
at android.view.ViewGroup.addView(ViewGroup.java:5824)
at android.transition.TransitionUtils.createViewBitmap(TransitionUtils.java:192)
at android.transition.TransitionUtils.copyViewImage(TransitionUtils.java:103)
none of them looks to be in my code... has anyone encountered these crashes before?
Edit:
the remainder of stacktraces are common:
at android.transition.TransitionUtils.copyViewImage(TransitionUtils.java:103)
at android.transition.Visibility.onDisappear(Visibility.java:420)
at android.transition.Visibility.createAnimator(Visibility.java:255)
at android.transition.Transition.createAnimators(Transition.java:733)
at android.transition.TransitionSet.createAnimators(TransitionSet.java:444)
at android.transition.Transition.playTransition(Transition.java:1777)
at android.transition.TransitionManager$MultiListener.onPreDraw(TransitionManager.java:327)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1124)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3867)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2631)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9978)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
at android.view.Choreographer.doCallbacks(Choreographer.java:809)
at android.view.Choreographer.doFrame(Choreographer.java:744)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8506)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
it happens on android 10 and not on android 7-9, it looks like it is trying to create bitmap of current fragment, but the current fragment contains TabLayout and viewPager and are not supported.
Debugging I see that the invalid view it tries to add on TabLayout is a SlidingTabIndicator, so it looks correct.
Another information, It looks like the crash started when I moved from Theme.AppCompat.Light.NoActionBar
to Theme.MaterialComponents.Light.NoActionBar
as base theme of my application