2010-04-19 22 views
8

Tengo una aplicación en el mercado y muchos usuarios han informado de que la aplicación se cuelga mucho al azar. Estoy tratando de arreglar esto, pero no puedo entender completamente los registros. Aquí hay un extracto del registro,Classcastexception se produce al azar

04-16 13:16:32.407 E/AndroidRuntime(9237): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.maya.mobile.chiki/com.maya.mobile.chiki.tabview.Tabs3}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.maya.mobile.chiki/com.maya.mobile.chiki.featured.FeaturedView}: java.lang.ClassCastException: android.view.AbsSavedState$1 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.os.Looper.loop(Looper.java:123) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.main(ActivityThread.java:4363) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at java.lang.reflect.Method.invokeNative(Native Method) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at java.lang.reflect.Method.invoke(Method.java:521) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at dalvik.system.NativeStart.main(Native Method) 
04-16 13:16:32.407 E/AndroidRuntime(9237): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.maya.mobile.chiki/com.maya.mobile.chiki.featured.FeaturedView}: java.lang.ClassCastException: android.view.AbsSavedState$1 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2335) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:648) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.TabHost.setCurrentTab(TabHost.java:320) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.maya.mobile.chiki.tabview.CustomTabHost.setCurrentTab(CustomTabHost.java:43) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.TabHost.addTab(TabHost.java:213) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.maya.mobile.chiki.tabview.Tabs3.doCreateTabs(Tabs3.java:180) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.maya.mobile.chiki.tabview.Tabs3.onCreate(Tabs3.java:149) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
04-16 13:16:32.407 E/AndroidRuntime(9237): ... 11 more 
04-16 13:16:32.407 E/AndroidRuntime(9237): Caused by: java.lang.ClassCastException: android.view.AbsSavedState$1 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.AbsSpinner.onRestoreInstanceState(AbsSpinner.java:440) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.View.dispatchRestoreInstanceState(View.java:5940) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:1140) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:767) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1127) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.view.View.restoreHierarchyState(View.java:5919) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1454) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Activity.onRestoreInstanceState(Activity.java:835) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Activity.performRestoreInstanceState(Activity.java:807) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096) 
04-16 13:16:32.407 E/AndroidRuntime(9237): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2473) 
04-16 13:16:32.407 E/AndroidRuntime(9237): ... 22 more 

Recibí este registro de uno de mis usuarios.

Cualquier ayuda sobre esto sería muy, muy útil.

Saludos, Hari


que finalmente fue capaz de replicar este problema a través de un emulador configurado con memoria de 50 MB y se ejecuta en velocidad de la red GSM. El problema parece deberse a que se borró la historia y, por lo tanto, se perdieron los datos que la aplicación ya tenía. No estoy seguro de cómo puedo manejar esto sin embargo ... ¿alguna ayuda?

+0

¿implementó su propia clase spinner? en caso afirmativo, ¿anuló el método onRestore? – Adam

+0

Sin Adam, no implementé ninguna clase de spinner personalizada. – HariKJ

Respuesta

12

Mi conjetura es que:

  • Usted tiene una actividad que contiene un TabHost (fino)
  • El contenido de estas pestañas son actividades (malo)
  • está duplicando android:id valores entre algunas de las widgets en esas actividades (mortales)
+0

En realidad, sí ... Tengo actividades como contenido para la pestaña ... ej. intent = new Intención(). SetClass (this, CategoryView.class); spec = tabHost.newTabSpec ("Temas"). SetIndicator ("Temas", res.getDrawable (R.drawable.ic_tab_artists)).setContent (intención); tabHost.addTab (especificación); donde CategoryView extiende la Actividad. ¿Entonces puede decirme qué necesitaría tener como contenido para las pestañas? – HariKJ

+0

He usado un ejemplo de http://www.androidsnippets.info/snippets/68/ ¿Me puede decir por qué no debemos usar actividades? – HariKJ

+0

Bueno, a otros les gusta poner actividades como el contenido de las pestañas, pero todo lo que puedo ver es que ocupan más memoria, más tiempo de CPU y más espacio en la pila, lo que empeora las aplicaciones. Puede configurar sus pestañas para tener 'Vistas' simples como sus contenidos, como este proyecto: http://github.com/commonsguy/cw-android/tree/master/Fancy/Tab/ Incluso si deja sus actividades solo , debe cambiar los diseños que utilizan esas actividades para que todos los widgets '' android: id' sean únicos. – CommonsWare

1

Tuve este problema también. Tuve dos actividades con widgets con los mismos ID. En un archivo, este widget era un Botón y en otro archivo el widget era un Spinner. Cambié los ID para que el Spinner tuviera una ID diferente a la del Botón y el problema desapareció. Parece que Android tiene problemas si usa la misma ID en dos clases diferentes de de widgets.

1

tuve un problema similar Fue un resultado de dos puntos de vista [Button] que tienen el mismo ID que sucedió a mí porque el editor Eclipse XML mostró un botón, pero registrado 2 de la misma ID Lo resuelto por cortando el botón de guardar y luego pegarlo y guardar de nuevo.

0

A veces esto me sucede a mí.

primero esta: eliminar el archivo R.java de manera que se regenera.

Luego intente esto: Renovo el id del widget en el XML y en el java. A continuación, elimine el archivo R.java para que se vuelva a generar. Ejecútelo para expulsarlo. Cambie el nombre a la forma en que era, y es bueno irse.