4

私は Android でアプリケーションを実装しています。オブジェクトをパーセル化してアクティビティ間を移動する必要があります。サーバーで休止状態を使用しているため、クラスには属性としてハッシュセットがあり、分割する方法がわかりません。

これが私のコードと私の試みです...しかし、それが大丈夫かどうかはわかりません。また、小包に書き込む方法もわかりません。また、DATE の小包と属性としての他のオブジェクトがうまくできたかどうかも知りたいです。

public class Incidencia implements Parcelable {

// Atributos
private String id_incidencia;
private String estado;
private double latitud;
private double longitud;
private Date fecha_creacion;
private Date fecha_cierre;

private Puesto puesto;
private SubTipo subtipo;

private Set<iTarea> iTareas = new HashSet<iTarea>();

// Constructores
public Incidencia() {}

public Incidencia(String id, String est, double lat, double lon, Date f_cre, Date f_cie, Puesto pue, SubTipo sub, Set<iTarea> iTa) {
    this.id_incidencia = id;
    this.estado = est;
    this.latitud = lat;
    this.longitud = lon;
    this.fecha_creacion = f_cre;
    this.fecha_cierre = f_cie;
    this.puesto = pue;
    this.subtipo = sub;
    this.iTareas = iTa;
}

// Necesarios para que sea Parcelable
public Incidencia(Parcel in) {
    this.id_incidencia = in.readString();
    this.estado = in.readString();
    this.latitud = in.readDouble();
    this.longitud = in.readDouble();
    this.fecha_creacion = new Date(in.readLong());
    this.fecha_cierre = new Date(in.readLong());
    this.puesto = (Puesto)in.readParcelable(Puesto.class.getClassLoader());
    this.subtipo = (SubTipo)in.readParcelable(SubTipo.class.getClassLoader());
    this.iTareas = (Set<iTarea>) in.readHashMap(iTarea.class.getClassLoader());

}

public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(this.getId_incidencia());
    dest.writeString(this.getEstado());
    dest.writeDouble(this.getLatitud());
    dest.writeDouble(this.getLongitud());
    dest.writeLong(this.getFecha_creacion().getTime());
    dest.writeLong(this.getFecha_cierre().getTime());
    dest.writeParcelable((Parcelable) this.puesto, flags);
    dest.writeParcelable((Parcelable) this.subtipo, flags);
}

public int describeContents() {
    return 0;
}

public static final Parcelable.Creator<Incidencia> CREATOR = new Parcelable.Creator<Incidencia>() {
    public Incidencia createFromParcel(Parcel in) {
        return new Incidencia(in);
    }

    public Incidencia[] newArray(int size) {
        return new Incidencia[size];
    }
};
4

1 に答える 1

13

Set主に a が aではないため、機能しないと確信していMapます。Set.toArrayメソッドを使用してセットからオブジェクトの配列を取得し、を使用Parcel.writeTypedArrayしてそれをパーセルに書き込む方法をお勧めします。次に、オブジェクトを再作成するときに、配列を読み取って Set を設定するだけです。iTareaこれには、クラスも実装する必要がありますが、 aを としてParcelable渡そうとするよりもはるかに優れたソリューションです。HashSetHashMap

ちなみに、他のオブジェクトと日付は問題ないはずです。

于 2013-02-27T02:18:09.167 に答える