Obtención de Unmarshalling código de tipo desconocido al volver a parcelar el mismo objeto
Tengo un flujo de trabajo de actividad circular como
A -> B -> C -> A -> B -> C -> A -> B -> C …
- Cómo hacer una clase interna Parcelable
- Código de tipo desconocido del paquete
- Pon el Objeto como intención para la siguiente actividad
- Cómo enviar objetos a través de un paquete
- Cómo implementar correctamente Parcelable con un ArrayList <Parcelable>?
Estoy pasando un Parcelable de activit B a C. La primera vez que funciona. La segunda vez que me da
Parcel android.os.Parcel@405156d0: Unmarshalling tipo desconocido código 7471204 en el desplazamiento 1108
En la línea de lectura del objeto.
El objeto no cambió. No sé si es exactamente la misma instancia, pero los contenidos al menos son exactamente los mismos. ¿Por qué funciona la primera vez y no funciona la segunda vez?
A veces también sucede la primera vez.
Traté de eliminar todo en la escritura / lectura (prueba con sólo un campo entero), y todavía obtener lo mismo.
Cuando se produce el error, el objeto no se lee en absoluto , se ejecuta la línea con getParcelable()
pero nunca se ejecuta createFromParcel
o el constructor. Simplemente da error y no hace nada. Así que no es un error con la parcelación de los campos.
Estoy completamente despistado …
He intentado reproducir con un entorno de prueba muy pequeño – 2 actividades y un objeto muy pequeño allí puedo pasar el parcelable tantas veces como quiera y es correcto.
No puedo publicar aquí mi código completo.
Sólo quiero saber qué tipo de cosas pueden estar causando este error. El writeToParcel
y el constructor son correctos, los datos se escriben y se leen en el mismo orden, tpyes correctos, también hay la variable CREATOR que también es correcta, he comprobado todo 100 veces. Y como se dijo que funciona mucho tiempo. A veces los datos en el objeto son exactamente los mismos (marcados, cada campo contiene el mismo valor), la primera vez que funciona, la segunda vez que muestra este "Unmarshalling tipo desconocido".
Otra cosa que es bastante interesante y podría estar relacionada, y tampoco entiendo, es que el parcelable, aunque ejecuto putExtra
sólo una vez, se está escribiendo dos veces. putExtra
registros y es seguro que putExtra
se ejecuta sólo una vez. Pero el writeToParcel
se ejecuta dos veces … no hay idea de por qué. En el ejemplo simplificado esto no sucede.
Cualquier sugerencia es bienvenida. Hice todo el trabajo para pasar mis parámetros en todas partes usando Parcelable, y son mucho, porque todo el mundo dice "me anima a utilizar Parcelable en su lugar", usted dice que sus dientes están sangrando y obtener "uso parcelable". Ahora estoy usando Parcelable y todo lo que tengo es un nuevo montón de problemas.
- ¿Por qué es nulo el objeto parcelable en la actividad de recepción?
- Implementar interfaz parcelable utilizando Gson
- Es parcelable vale la pena implementar para pasar datos entre las actividades?
- Android Parcelable y Serializable
- Envío de la lista de objetos del array entre actividades con Parcelable
- Agregando parcelable a una clase de interfaz para objetos personalizados
- Objeto que implementa la interfaz Parcelable que contiene una lista lanza una excepción NullPointerException
- Android JUnit no se compila si los objetos son parcelables
Tengo este error cuando estaba usando una clase Parcelable, y he añadido una variable en esta clase y olvidé agregar esta variable a los métodos "writeToParcel" y el constructor con el objeto Parcel
Se resolvió agregando esta variable a los métodos siguientes.
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(id); dest.writeString(name); } public ItemDetails(Parcel source) { id = source.readString(); name = source.readString(); }