Crea un objeto java personalizado Parcelable en Android

Estoy tratando de enviar un objeto de tipo MyCustomObject a otra actividad a través de una intención. Sé, para hacer la clase Parcelable, debo hacer public class MyCustomObject implements Parcelable , pero no estoy seguro de cómo los arrays de objetos personalizados funcionan en parcelable. Esto es lo que tengo hasta ahora .. También, ¿tengo que hacer la clase de búsqueda implementa Parcelable también?

Aquí está mi respuesta actualizada ahora consigo un objeto nulo cuando hago intent.getParcelableExtra(search) . Tal vez no estoy creando la matriz de búsqueda correctamente?

 public class MyCustomObject implements Parcelable{ public Search search[]; public MyCustomObject(Parcel in){ in.readArray(MyCustomObject.class.getClassLoader()); } @Override public int describeContents(){ return 0; } @Override public void writeToParcel(Parcel dest, int flags){ dest.writeArray(search) } public static final Parcelable.Creator<MyCustomObject> CREATOR = new Parcelable.Creator<MyCustomObject>(){ @Override public MyCustomObject createFromParcel(Parcel source){ return new MyCustomObject(source); } @Override public MyCustomObject[] newArray(int size){ return new MyCustomObject[size]; } } public static class Search implements Parcelable{ public int rank; public String title; public String[] imageURL; public Search(Parcel in){ rank = in.readInt(); title = in.readString(); String[] url = new String[4]; in.readStringArray(url); url = imageURL } @Override public int describeContents(){ return 0; } @Override public void writeToParcel(Parcel dest, int flags){ dest.writeInt(rank); dest.writeString(title); dest.writeStringArray(imageURL); } public static final Parcelable.Creator<Search> CREATOR = new Parcelable.Creator<Search>(){ @Override public Search createFromParcel(Parcel source){ return new Search(source); } @Override public Search[] newArray(int size){ return new Search[size]; } } } } 

Un par de cosas. En primer lugar, su objeto de búsqueda tendrá que implementar Parcelable también. A continuación, debe crear un campo estático denominado CREATOR que implemente Parcelable.Creator <MyCustomObject>. Esto tendrá un método llamado createFromParcel que devuelve una instancia de MyCustomObject. Es ahí donde se leen los datos de un paquete y se crea una nueva instancia de MyCustomObject. Esto es esencialmente lo contrario de writeToParcel. Todo esto se aplica a la búsqueda también ya que debe hacer que implementar Parcelable. En resumen:

  • Aplicación de búsqueda implementable Parcelable
  • Implementar Search.writeToParcel
  • Crear un campo estático en la búsqueda llamada CREATOR que implementa Parcelable.Creator <Search>
  • Implementar el método createFromParcel de Search.CREATOR
  • Crear un campo estático en MyCustomObject denominado CREATOR que implementa Parcelable.Creator <MyCustomObject>
  • Implementar el método createFromParcel de MyCustomObject.CREATOR

cuando leeArray from Parcel, desea leer un array Search []. No es el MyCustomObject.

  public MyCustomObject(Parcel in){ in.readArray(MyCustomObject.class.getClassLoader()); } 
  • Parcelable y herencia
  • Android BadParcelableException sólo con apk firmado
  • Agregando parcelable a una clase de interfaz para objetos personalizados
  • Objetos complementarios en las interfaces Kotlin
  • Hacer una clase parcelable que contiene la lista de objetos personalizados
  • ¿Cómo pasar el objeto Parcelable del niño a la actividad de los padres?
  • Cómo hacer una lista <enum> parcelable?
  • Escribir enum con String a paquete
  • Android: Parcelable.writeToParcel y Parcelable.Creator.createFromParcel nunca se llaman
  • ¿Por qué algunas veces funciona guardar un Hashtable de objetos no Parcelable en onSaveInstanceState ()?
  • Android: cómo almacenar persistentemente un Spanned?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.