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 …

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.

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(); } 
  • Implementación parcelable con ArrayList <objeto personalizado>
  • Problema en la implementación de Parcelable conteniendo otros Parcelable
  • Android parcelable referenciando otra dependencia circular parcelable
  • El protocolo Parcelable requiere un objeto Parcelable.Creator llamado CREATOR (tengo CREATOR)
  • Pase la matriz 2D a otra actividad
  • Java.lang.RuntimeException: Parcel android.os.Parcel: Código desconocido del tipo de desconexión
  • Poner un mapa de bits en un paquete
  • Limitación de tamaño en adjunto ¿Parcelable?
  • ¿Por qué algunas veces funciona guardar un Hashtable de objetos no Parcelable en onSaveInstanceState ()?
  • Restauración de la vista SavedState lanza ClassNotFoundException al desmarcar la vista principal SavedState
  • Monodroid poniendo objetos parcelables en un paquete
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.