Inexplicable ClassCastException en android.widget.ProgressBar.onRestoreInstanceState


He tenido mi aplicación en la tienda por un tiempo, pero parece que se bloquea de vez en cuando de acuerdo con los informes de fallos en la consola del desarrollador, diciendo: java.lang.ClassCastException in android.widget.ProgressBar.onRestoreInstanceState con el seguimiento de 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

La razón de estos bloqueos me elude, y no puedo reproducirla en ninguno de mis dispositivos. Tampoco tengo un onRestoreInstanceState anulado en ninguna parte. ¿Alguien puede indicarme una dirección que tenga sentido?

Author: Marc Köhler, 2013-03-08

4 answers

He visto problemas similares a esto antes, y es porque tienes dos id que comparten el mismo nombre.

El onRestoreInstanceState ha realizado el método findViewById y la primera vista que se encontró no fue el ProgressView.

Verifique que su aplicación no reutilice el mismo ID en dos lugares diferentes

 68
Author: jimmithy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-09 21:42:16

Yo tenía un problema diferente: En un diseño de la raíz era un ScrollView mientras que en el otro la raíz era un RelativeView que contenía el ScrollView. Todos los id de widgets eran idénticos y no había duplicados. En rotar el registro de fallos fue:

java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ScrollView$SavedState

Una vez que hice coincidir los layouts (así 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 bloqueo, por lo que cualquier información sería apreciada...

 8
Author: bkurzius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-24 16:24:39

En mi caso mi xml vertical tiene Relativelayout y ScrollView desde xml horizontal con el mismo ID.

En mi clase de actividad intento inflar el diseño y asignarlo en ViewGroup

Así que cuando se produce la rotación de la pantalla se lanza: java.lang.ClassCastException: android.view.AbsSavedState$1 no se puede lanzar a android.widget.ScrollView$SavedState

Es porque el ScrollView se extiende FrameLayout mientras que Relativelayout se extiende ViewGroup

Así que simplemente envuelvo el xml horizontal con Relativelayout y resuelve el problema

 2
Author: watata,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-14 06:13:53

Obtuve este crash messsage en 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 por sí mismo en el archivo de diseño. Cuando quité la envoltura FrameLayout, todo funcionó bien. (Nota: el GridView se utilizó en el lado maestro de un diseño maestro/vista.)

El mensaje no apareció hasta que actualicé la configuración de Gradle a esta:

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'

}

Eran anteriormente 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.

 1
Author: Jon Teets,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-29 16:22:00