-
Notifications
You must be signed in to change notification settings - Fork 1.9k
[Crash] java.lang.ClassCastException: android.view.View$BaseSavedState cannot be cast to android.widget.CompoundButton$SavedState #14180
Comments
The StackOverflow link indicates this may be related to some state handling in Xamarin.Forms. I'm going to transfer it to them first and see if it's an issue in XF. |
Hi, @inimirpaz - thank you for submitting this issue! Are you able to share your project or a sample project that can help us get a sense of your general project structure, what controls you're using, etc? In particular, I'm curious about any code you might have related to state handling. Also, do you have information on which devices and versions of Android that users are experiencing this crash on? And what version of XF are you using? Thanks :) |
Hi, @rachelkang thanks for your reply. Since we have not been able to repro this in any smaller project (not sure what to look for for reproducing this issue) I am not able to provide any sample project. We do not have any explicit Android state handling code beside the one we cited above from the StackOverflow post. We are using Xamarin Forms 5 (we have been having this issue at least for every 5 release so far, I could check if the issue was there even with 4.8). Here are the latest few errors we could find from our users (note that the last one is slightly different): Mi Note 10 - Android 11
android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:653
android.view.View.dispatchRestoreInstanceState View.java:20852
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4014
android.view.View.restoreHierarchyState View.java:20830
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2185
android.app.Activity.onRestoreInstanceState Activity.java:1721
android.app.Activity.performRestoreInstanceState Activity.java:1674
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1357
android.app.ActivityThread.handleStartActivity ActivityThread.java:3543
android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221
android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201
android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173
android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97
android.app.ActivityThread$H.handleMessage ActivityThread.java:2108
android.os.Handler.dispatchMessage Handler.java:106
android.os.Looper.loop Looper.java:236
android.app.ActivityThread.main ActivityThread.java:7876
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:656
com.android.internal.os.ZygoteInit.main ZygoteInit.java:967
Galaxy S10+ - Android 11
android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:686
android.view.View.dispatchRestoreInstanceState View.java:22288
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:4805
android.view.View.restoreHierarchyState View.java:22266
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2267
android.app.Activity.onRestoreInstanceState Activity.java:1719
android.app.Activity.performRestoreInstanceState Activity.java:1672
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1356
android.app.ActivityThread.handleStartActivity ActivityThread.java:3834
android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221
android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201
android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173
android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97
android.app.ActivityThread$H.handleMessage ActivityThread.java:2307
android.os.Handler.dispatchMessage Handler.java:106
android.os.Looper.loop Looper.java:246
android.app.ActivityThread.main ActivityThread.java:8506
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:602
com.android.internal.os.ZygoteInit.main ZygoteInit.java:1130
LM-X420 - Android 8.1.0
android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:563
android.view.View.dispatchRestoreInstanceState View.java:17775
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3825
android.view.View.restoreHierarchyState View.java:17753
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2166
android.app.Activity.onRestoreInstanceState Activity.java:1102
android.app.Activity.performRestoreInstanceState Activity.java:1057
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1261
android.app.ActivityThread.performLaunchActivity ActivityThread.java:2830
android.app.ActivityThread.handleLaunchActivity ActivityThread.java:2935
android.app.ActivityThread.-wrap11
android.app.ActivityThread$H.handleMessage ActivityThread.java:1627
android.os.Handler.dispatchMessage Handler.java:106
android.os.Looper.loop Looper.java:175
android.app.ActivityThread.main ActivityThread.java:6724
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:438
com.android.internal.os.ZygoteInit.main ZygoteInit.java:810
CPH1803RU - Android 8.1.0
android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:563
android.view.View.dispatchRestoreInstanceState View.java:17944
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3794
android.view.View.restoreHierarchyState View.java:17922
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2202
android.app.Activity.onRestoreInstanceState Activity.java:1182
android.app.Activity.performRestoreInstanceState Activity.java:1137
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1261
android.app.ActivityThread.performLaunchActivity ActivityThread.java:2968
android.app.ActivityThread.handleLaunchActivity ActivityThread.java:3073
android.app.ActivityThread.-wrap11
android.app.ActivityThread$H.handleMessage ActivityThread.java:1774
android.os.Handler.dispatchMessage Handler.java:106
android.os.Looper.loop Looper.java:198
android.app.ActivityThread.main ActivityThread.java:7055
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:523
com.android.internal.os.ZygoteInit.main ZygoteInit.java:836
realme C3 - Android 10
android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:603
android.view.View.dispatchRestoreInstanceState View.java:20119
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3968
android.view.View.restoreHierarchyState View.java:20097
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2166
android.app.Activity.onRestoreInstanceState Activity.java:1623
android.app.Activity.performRestoreInstanceState Activity.java:1571
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1353
android.app.ActivityThread.handleStartActivity ActivityThread.java:3574
android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:226
android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:206
android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:178
android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:102
android.app.ActivityThread$H.handleMessage ActivityThread.java:2239
android.os.Handler.dispatchMessage Handler.java:107
android.os.Looper.loop Looper.java:227
android.app.ActivityThread.main ActivityThread.java:7822
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:492
com.android.internal.os.ZygoteInit.main ZygoteInit.java:1026
Redmi 8 - Android 10
android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:603
android.view.View.dispatchRestoreInstanceState View.java:19930
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.View.restoreHierarchyState View.java:19908
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2162
android.app.Activity.onRestoreInstanceState Activity.java:1603
android.app.Activity.performRestoreInstanceState Activity.java:1558
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1354
android.app.ActivityThread.handleStartActivity ActivityThread.java:3348
android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221
android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201
android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173
android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97
android.app.ActivityThread$H.handleMessage ActivityThread.java:2044
android.os.Handler.dispatchMessage Handler.java:107
android.os.Looper.loop Looper.java:223
android.app.ActivityThread.main ActivityThread.java:7562
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:539
com.android.internal.os.ZygoteInit.main ZygoteInit.java:950
MI MAX 3 - Android 10
android.widget.CompoundButton.onRestoreInstanceState CompoundButton.java:603
android.view.View.dispatchRestoreInstanceState View.java:19930
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.ViewGroup.dispatchRestoreInstanceState ViewGroup.java:3892
android.view.View.restoreHierarchyState View.java:19908
com.android.internal.policy.PhoneWindow.restoreHierarchyState PhoneWindow.java:2162
android.app.Activity.onRestoreInstanceState Activity.java:1602
android.app.Activity.performRestoreInstanceState Activity.java:1557
android.app.Instrumentation.callActivityOnRestoreInstanceState Instrumentation.java:1354
android.app.ActivityThread.handleStartActivity ActivityThread.java:3348
android.app.servertransaction.TransactionExecutor.performLifecycleSequence TransactionExecutor.java:221
android.app.servertransaction.TransactionExecutor.cycleToPath TransactionExecutor.java:201
android.app.servertransaction.TransactionExecutor.executeLifecycleState TransactionExecutor.java:173
android.app.servertransaction.TransactionExecutor.execute TransactionExecutor.java:97
android.app.ActivityThread$H.handleMessage ActivityThread.java:2044
android.os.Handler.dispatchMessage Handler.java:107
android.os.Looper.loop Looper.java:224
android.app.ActivityThread.main ActivityThread.java:7562
java.lang.reflect.Method.invoke Method.java
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:539
com.android.internal.os.ZygoteInit.main ZygoteInit.java:950
Is there anything we could do for making this issue more "debugable"? |
This is also happening to us:
|
@inimirpaz about that linked stackoverflow post that didn't work for you. There are other components that are subclasses from CompoundButton. Did you create renderers for all of them to test? Because the fix in that post is only for switches. Known direct subclasses: CheckBox, RadioButton, Switch, ToggleButton. |
Hi @romerotg |
Description
We often receive crash reports from our Android users but (sorry!) we could never really replicate it in a controlled test environment, neither do we have any insight from our users on when/how the crash occurs...
Could you shed some light on where to look for investigating this issue any further?
Version Information
Edit:
Fix Attempts
We blindly tried to fix the issue many times already. Lately we tried with this https://stackoverflow.com/a/53895270/13370543 but it did not work.
The text was updated successfully, but these errors were encountered: