mejores - tipos de widgets android studio
ClassCastException inexplicable en android.widget.ProgressBar.onRestoreInstanceState (4)
En mi caso, mi retrato xml tiene Relativelayout
y ScrollView
de landscape xml con la misma ID.
En mi clase de actividad trato de inflar el diseño y asignarlo en ViewGroup
Entonces, cuando ocurre la rotación de la pantalla, arroja: java.lang.ClassCastException: android.view.AbsSavedState$1
no se puede convertir a android.widget.ScrollView$SavedState
Es porque ScrollView
extiende FrameLayout
mientras que Relativelayout
extiende ViewGroup
Así que simplemente envuelvo el paisaje xml con Relativelayout
y resuelvo el problema
He tenido mi aplicación en la tienda por un tiempo, pero parece que se cuelga ocasionalmente de acuerdo con los informes de fallos en Developer Console, diciendo: java.lang.ClassCastException in android.widget.ProgressBar.onRestoreInstanceState
con el seguimiento de la pila:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.company.myapp/com.mycompany.myapp.activity.MyActivity}: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1996)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.access$600(ActivityThread.java:127)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1174)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4503)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState
at android.widget.ProgressBar.onRestoreInstanceState(ProgressBar.java:1093)
at android.view.View.dispatchRestoreInstanceState(View.java:9975)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2408)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2408)
at android.view.View.restoreHierarchyState(View.java:9951)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1611)
at android.app.Activity.onRestoreInstanceState(Activity.java:908)
at android.app.Activity.performRestoreInstanceState(Activity.java:880)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1102)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
... 11 more
El motivo de estos bloqueos se me escapa y no puedo reproducirlo en ninguno de mis dispositivos. No tengo un onRestoreInstanceState
reemplazado en cualquier lugar tampoco. ¿Alguien puede señalarme en una dirección que tenga sentido?
He visto problemas similares a esto antes, y es porque tienes dos identificadores que comparten el mismo nombre.
El onRestoreInstanceState
ha realizado el método findViewById
y la primera vista que se encontró no fue ProgressView
.
Verifique que su aplicación no reutilice la misma ID en dos lugares diferentes
Recibí este mensaje de error de rotación cuando tenía un GridView en dos diseños diferentes, un retrato y el otro paisaje. Uno estaba contenido en un FrameLayout y el otro no, es decir, estaba solo en el archivo de diseño. Cuando eliminé FrameLayout, todo funcionó bien. (Nota: el GridView se usó en el lado principal de un diseño maestro / vista).
El mensaje no apareció hasta que actualicé mi configuración de Gradle a esto:
android {
compileSdkVersion 23
buildToolsVersion ''23.0.2''
defaultConfig {
applicationId ''com.example.android.redacted.app''
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
dependencies {
compile fileTree(include: [''*.jar''], dir: ''libs'')
compile ''com.android.support:appcompat-v7:23.1.1''
}
Antes eran esto:
android {
compileSdkVersion 21
buildToolsVersion ''21.1.2''
defaultConfig {
applicationId ''com.example.android.redacted.app''
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
dependencies {
compile fileTree(include: [''*.jar''], dir: ''libs'')
compile ''com.android.support:appcompat-v7:21.0.2''
}
Parece que Marshmallow es más implacable con este error.
Tuve un problema diferente: en un diseño, la raíz era un ScrollView, mientras que en el otro, la raíz era un RelativeView que contenía ScrollView. Todos los identificadores de widgets eran idénticos y no había duplicados. Al girar, el registro de bloqueo fue:
java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ScrollView$SavedState
Una vez que coincidí con los diseños (por lo que en ambos, la raíz era RelativeLayout o ScrollView), la rotación funcionó bien.
No estoy seguro de por qué esto causaría un colapso por lo que cualquier apreciación sería apreciada ...