Android proporciona un tipo: Parcela. Se utiliza como contenedor para encapsular datos. Los datos encapsulados se pueden entregar a través de Intent o IPC. Además de los tipos básicos, en Parcel solo se pueden incluir clases que implementen la interfaz Parcelable.
Puntos clave de la implementación de Parcelable: es necesario implementar tres cosas
1) método writeToParcel. Este método escribe los datos de la clase en un Parcel proporcionado externamente. Se declara de la siguiente manera:
writeToParcel (Destino del paquete, banderas int) Consulte javadoc para obtener significados de parámetros específicos
2) método describeContents. No entiendo cuál es el uso. De todos modos, puedes devolver 0.
3) Interfaz estática Parcelable.Creator. Esta interfaz tiene dos métodos:
createFromParcel(Parcel in) implementa la función de crear una instancia de la clase desde en
newArray(int size) crea una matriz de tipo T y tamaño de longitud, solo una oración (devuelve nueva T[size]) es suficiente. Se estima que las clases externas utilizan este método para deserializar matrices de esta clase.
Actividad para recibir información para pruebas:
importar android.app.Activity; importar android.content.Intent; importar android.os.Bundle; importar android.os.Parcelable; prueba de clase pública extiende Actividad { @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState) ; setContentView(R.layout.main); Intención i = getIntent(); i.getParcelableExtra("sí"); System.out.println("---->"+p.name()); ; } }
Actividad enviada:
importar java.util.HashMap; importar android.app.Activity; importar android.content.Intent; importar android.os.Bundle; clase pública TestNew extiende Actividad { @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstanceState) ; setContentView(R.layout.main); Intención intención = nueva Intención(); nueva Persona p.map = nueva HashMap<String,String>(); p.map.put("yes", "ido"); p.name="ok"; .clase); iniciarActividad(intención);
Clase de implementación parcelable:
importar java.util.HashMap; importar android.os.Parcel; importar android.os.Parcelable; clase pública Persona implementa Parcelable { public HashMap<String,String> map = new HashMap<String,String> (); @Override public int describeContents() { return 0 } @Override public void writeToParcel(Destino del paquete, int flags) { dest.writeMap(mapa); dest.writeString(nombre); } public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { //Anular Creador @Override public Person createFromParcel(Fuente del paquete) { Persona p = nueva Persona(); p.map=source.readHashMap(HashMap.class.getClassLoader()); p.name=source.readString(); return p; } @Override public Person[] newArray(int size) { // TODO Método generado automáticamente stub return null;