Skip to content

Android crashing when rotating a flyout page #24779

@Brosten

Description

@Brosten

Description

I'm opening a new issue on this topic, since the existing once are incorrectly closed.

I use a flyout page and when rotating the screen, ~1 time out of 10 the app crashes.
The error message is something like:
androidx.drawerlayout.widget.DrawerLayout.getDrawerViewAbsoluteGravity
java.lang.ClassCastException: androidx.appcompat.widget.LinearLayoutCompat$LayoutParams cannot be cast to androidx.drawerlayout.widget.DrawerLayout$LayoutParams

Other similar, closed reports:
#20858
#18161

Steps to Reproduce

  1. Create a maui project with a flyout page
  2. On details page, put some random content (e.g. I added 50 lables within a VerticalStackLayout).
  3. Rotate the screen a bit back and fourth. Eventually, the app will crash with the above error, or something similar.

Link to public reproduction project repository

No response

Version with bug

8.0.82 SR8.2

Is this a regression from previous behavior?

Yes, this used to work in Xamarin.Forms

Last version that worked well

Unknown/Other

Affected platforms

Android

Affected platform versions

All versions, what I know of

Did you find any workaround?

From what I found, setting
FlyoutLayoutBehavior = FlyoutLayoutBehavior.Popover;
seems to prevent the crashes. But you also loose the visible flyout that can be nice to have, at least on landscape tablets.

Relevant log output

androidx.drawerlayout.widget.DrawerLayout.getDrawerViewAbsoluteGravity DrawerLayout.java:991
androidx.drawerlayout.widget.DrawerLayout.checkDrawerViewAbsoluteGravity DrawerLayout.java:996
androidx.drawerlayout.widget.DrawerLayout$ViewDragCallback.onViewPositionChanged DrawerLayout.java:2292
androidx.customview.widget.ViewDragHelper.continueSettling ViewDragHelper.java:779
androidx.drawerlayout.widget.DrawerLayout.computeScroll DrawerLayout.java:1375
android.view.View.updateDisplayListIfDirty View.java:24009
android.view.View.draw View.java:24907
android.view.ViewGroup.drawChild ViewGroup.java:4780
android.view.ViewGroup.dispatchDraw ViewGroup.java:4538
android.view.View.updateDisplayListIfDirty View.java:24022
android.view.View.draw View.java:24907
android.view.ViewGroup.drawChild ViewGroup.java:4780
android.view.ViewGroup.dispatchDraw ViewGroup.java:4538
android.view.View.updateDisplayListIfDirty View.java:24022
android.view.View.draw View.java:24907
android.view.ViewGroup.drawChild ViewGroup.java:4780
android.view.ViewGroup.dispatchDraw ViewGroup.java:4538
android.view.View.updateDisplayListIfDirty View.java:24022
android.view.View.draw View.java:24907
android.view.ViewGroup.drawChild ViewGroup.java:4780
android.view.ViewGroup.dispatchDraw ViewGroup.java:4538
android.view.View.updateDisplayListIfDirty View.java:24022
android.view.View.draw View.java:24907
android.view.ViewGroup.drawChild ViewGroup.java:4780
android.view.ViewGroup.dispatchDraw ViewGroup.java:4538
android.view.View.updateDisplayListIfDirty View.java:24022
android.view.View.draw View.java:24907
android.view.ViewGroup.drawChild ViewGroup.java:4780
android.view.ViewGroup.dispatchDraw ViewGroup.java:4538
com.android.internal.policy.DecorView.dispatchDraw DecorView.java:1179
android.view.View.draw View.java:25180
com.android.internal.policy.DecorView.draw DecorView.java:1161
android.view.View.updateDisplayListIfDirty View.java:24036
android.view.ThreadedRenderer.updateViewTreeDisplayList ThreadedRenderer.java:768
android.view.ThreadedRenderer.updateRootDisplayList ThreadedRenderer.java:774
android.view.ThreadedRenderer.draw ThreadedRenderer.java:872
android.view.ViewRootImpl.draw ViewRootImpl.java:6051
android.view.ViewRootImpl.performDraw ViewRootImpl.java:5706
android.view.ViewRootImpl.performTraversals ViewRootImpl.java:4795
android.view.ViewRootImpl.doTraversal ViewRootImpl.java:3288
android.view.ViewRootImpl$TraversalRunnable.run ViewRootImpl.java:11344
android.view.Choreographer$CallbackRecord.run Choreographer.java:1689
android.view.Choreographer$CallbackRecord.run Choreographer.java:1698
android.view.Choreographer.doCallbacks Choreographer.java:1153
android.view.Choreographer.doFrame Choreographer.java:1079
android.view.Choreographer$FrameDisplayEventReceiver.run Choreographer.java:1646
android.os.Handler.handleCallback Handler.java:958
android.os.Handler.dispatchMessage Handler.java:99
android.os.Looper.loopOnce Looper.java:230
android.os.Looper.loop Looper.java:319
android.app.ActivityThread.main ActivityThread.java:8919
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:578
com.android.internal.os.ZygoteInit.main ZygoteInit.java:1103

Metadata

Metadata

Assignees

Labels

area-controls-flyoutpageFlyoutPagemigration-compatibilityXamarin.Forms to .NET MAUI Migration, Upgrade Assistant, Try-Convertplatform/androids/triagedIssue has been revieweds/verifiedVerified / Reproducible Issue ready for Engineering Triaget/bugSomething isn't working

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions