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?
- Java.lang.RuntimeException: Parcel android.os.Parcel: Código desconocido del tipo de desconexión
- Enviar ArrayList <Object> de BroadCastReceiver a Actividad
- Cómo escribir y leer org.joda.time.Date en la clase Parcelable
- getParcelable devuelve null incluso si el objeto pasado no es null
- Cómo pasar ArrayList de objetos de una a otra actividad utilizando Intent en android?
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]; } } } }
- ¿Es posible crear un HashMap que sea Parcelable en Android?
- Pase la matriz 2D a otra actividad
- WriteToParcel () no se llama en los cambios de orientación en Android
- No se puede implementar Parcelable porque no puedo hacer que el campo CREATOR esté estático
- Arraylist en objeto parcelable
- Pase Arraylist en Actividad a Fragmento
- ¿Qué es Parcel.enforceInterface?
- ¿Cómo maneja la superficie la recolección de basura después de ser parcelada en Android?
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()); }
- ¿Cómo agregar la opción de búsqueda en la aplicación Android?
- ActionbarSherlock: Ocultar barra de acciones al mostrar pestañas