Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Play Console: ClassCastException #959

Closed
gerhardol opened this issue Aug 13, 2020 · 3 comments
Closed

Play Console: ClassCastException #959

gerhardol opened this issue Aug 13, 2020 · 3 comments

Comments

@gerhardol
Copy link
Collaborator

gerhardol commented Aug 13, 2020

Play Console crash on a few devices, all Android 10 for releases since 2.1
OnePlus OnePlus6T, Xiaomi MI 9, Samsung Galaxy Tab S5e
Android 9 Huawei HUAWEI Y5 2019

There are RU classes in the stacktracktrace and no info when it occurs, if it is relevant at all.
It could be "@+id/sport_spinner" in start.xml as ClassicSpinner is the class that extends AppCompatSpinner,
but more probably any usage of title_spinner.xml that uses android.widget.Spinner

Some stack overflow discussions indicates that this occurs when ids are duplicated or overlap if a layout has the same name as an id.
sport_spinner and spinner is unique though
The only overlap I saw was "@+id/account_list"

java.lang.ClassCastException:
at androidx.appcompat.widget.AppCompatSpinner.onRestoreInstanceState (AppCompatSpinner.java:617)
at android.view.View.dispatchRestoreInstanceState (View.java:19963)
at android.view.ViewGroup.dispatchThawSelfOnly (ViewGroup.java:3903)
at android.widget.AdapterView.dispatchRestoreInstanceState (AdapterView.java:837)
at android.widget.AbsSpinner.dispatchRestoreInstanceState (AbsSpinner.java:377)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.ViewGroup.dispatchRestoreInstanceState (ViewGroup.java:3889)
at android.view.View.restoreHierarchyState (View.java:19941)
at com.android.internal.policy.PhoneWindow.restoreHierarchyState (PhoneWindow.java:2187)
at android.app.Activity.onRestoreInstanceState (Activity.java:1563)
at android.app.TabActivity.onRestoreInstanceState (TabActivity.java:67)
at android.app.Activity.performRestoreInstanceState (Activity.java:1518)
at android.app.Instrumentation.callActivityOnRestoreInstanceState (Instrumentation.java:1372)
at android.app.ActivityThread.handleStartActivity (ActivityThread.java:3414)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence (TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2109)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7682)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:950)

This was referenced Aug 22, 2020
@gerhardol

This comment has been minimized.

@gerhardol
Copy link
Collaborator Author

A few attempts to keep the resource ids and layout names unique was done, not sure if there are few occurrences (not enough data with 4K active installs, one exception make a major difference to the statistics).

#961
https://stackoverflow.com/questions/15298184/unexplainable-classcastexception-in-android-widget-progressbar-onrestoreinstance

#962
https://stackoverflow.com/questions/28961176/java-lang-classcastexception-android-view-abssavedstate1-cannot-be-cast-to-and
#964

Still seem to occur

other hints I found:
https://stackoverflow.com/questions/1714297/android-view-setidint-id-programmatically-how-to-avoid-id-conflicts/15442898#15442898
No candidates that seem to be changable identified yet

https://stackoverflow.com/questions/15298184/unexplainable-classcastexception-in-android-widget-progressbar-onrestoreinstance/15298256
No separate layouts in landscape mode

@gerhardol
Copy link
Collaborator Author

This exception has not occurred since 2.2.3, so last change seem to be sufficient

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant