android classcastexception findviewbyid

Clase emitida excepción a la misma clase en Android



classcastexception findviewbyid (2)

En realidad hay una solución.

Samsung usa la versión modificada del método makeDexElements (con argumentos adicionales) y la solución es modificar el código fuente de MultiDex para llamar solo para este modelo:

/** * A wrapper around * {@code private static final dalvik.system.DexPathList#makeDexElements}. */ private static Object[] makeDexElements( Object dexPathList, ArrayList<File> files, File optimizedDirectory, ArrayList<IOException> suppressedExceptions) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Method makeDexElements = findMethod(dexPathList, "makeDexElements", ArrayList.class, File.class, ArrayList.class, ClassLoader.class); makeDexElements.setAccessible(true); return (Object[]) makeDexElements.invoke(dexPathList, files, optimizedDirectory, suppressedExceptions, SamsungS5.class.getClassLoader()); }

Tengo un problema extraño con ClassCastException en Android. Una clase no puede ser lanzada a la misma clase:

java.lang.RuntimeException: Unable to start activity ComponentInfo: java.lang.ClassCastException: com.example.model.BadeWrapper cannot be cast to com.example.model.BadgeWrapper java.lang.ClassCastException: com.example.events.widgets.TouchyWebView cannot be cast to com.example.events.widgets.TouchyWebView java.lang.ClassCastException: com.example.friends.widgets.FriendsTabView cannot be cast to com.example.friends.widgets.FriendsTabView

Cuando encuentro la línea con error, todo lo que hace es encontrar vista por ID o crear un fragmento con argumentos, por ejemplo:

FriendsTabView friendsTabView; friendsTabView = (FriendsTabView) view.findViewById(R.id.friends_bottom_tab_panel);

Como dice mi BugSense, este problema ocurre solo en el Samsung Galaxy S5 con Android 5.0.0 (Samsung SM-G900F). Nunca he encontrado este problema en mis otros dispositivos:

  • Motorola Moto G 1ª generación (Android 5.0.1)
  • Samsung Galaxy S3 Mini (Android 4.1.2)
  • LG G2 Mini (Android 4.4.2)
  • Sony Xperia L (Android 4.1.2)

¿Alguien resolvió este problema antes? Hay alguna manera de arreglarlo?


Ok, donde está el problema. Parece que Samsung en Android 5.0 probablemente todavía usa la implementación antigua de multidex (usada en Android L Preview), por lo que si su aplicación excede el límite de 64k, se bloqueará en lugares aleatorios en la aplicación donde use la (ExampleClass) object .

Más información sobre este problema se puede encontrar here y here .

También estamos viendo este accidente miles de veces por día. Crashlytics informa el bloqueo como dispositivos 100% Samsung (99% "SM G900F [Q]") y 100% Android 5.x. Parece ser otro problema multidex en los dispositivos Samsung + Lollipop, como informa a.jaskev en # 3.

Parece que tenemos que esperar hasta que Samsung resuelva este problema. En este momento, todo lo que podemos hacer es ver nuestro spam en el buzón con informes de errores :)