O Android fornece um tipo: Parcel. É usado como um contêiner para encapsular dados. Os dados encapsulados podem ser entregues por meio de Intent ou IPC. Além dos tipos básicos, apenas classes que implementam a interface Parcelable podem ser colocadas no Parcel.
Pontos-chave da implementação do Parcelable: três coisas precisam ser implementadas
1) método writeToParcel. Este método grava os dados da classe em um Parcel fornecido externamente. É declarado da seguinte forma:
writeToParcel (Parcel dest, int flags) Consulte javadoc para obter significados de parâmetros específicos
2) método descriptionContents. Não entendo qual é a utilidade. De qualquer forma, você pode simplesmente retornar 0.
3) Interface Parcelable.Creator estática. Esta interface possui dois métodos:
createFromParcel(Parcel in) implementa a função de criar uma instância da classe de dentro
newArray(int size) cria um array do tipo T e tamanho de comprimento, apenas uma frase (return new T[size]) é suficiente. Estima-se que este método seja utilizado por classes externas para desserializar arrays desta classe.
Atividade para recebimento de informações para teste:
importar android.app.Activity; importar android.content.Intent; importar android.os.Bundle; importar android.os.Parcelable; ; setContentView(R.layout.main); i.getParcelableExtra("sim"); System.out.println("---->"+p.name); System.out.println("---->"+p.map.size()) ; } }
Atividade enviada:
importar java.util.HashMap; importar android.app.Activity; importar android.content.Intent; importar android.os.Bundle; ; setContentView(R.layout.main); intenção de intenção = new Intent(); HashMap<String,String>(); p.map.put("sim", "ido"); .class); startActivity(intenção);
Classe de implementação parcelável:
importar java.util.HashMap; importar android.os.Parcel; importar classe pública Pessoa implementa Parcelable { public HashMap<String,String> map = new HashMap<String,String> (); @Override public int descriptionContents() { return 0 } @Override public void writeToParcel(Parcel destino, int flags) { dest.writeMap(map); dest.writeString(nome); public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { //Override Creator @Override public Person createFromParcel(Origem do pacote) { Pessoa p = new Pessoa(); p.name=source.readString(); return p; @Override public Person[] newArray(int size) { // TODO stub do método gerado automaticamente null } };