Ich habe Probleme, meine Klasse zu machen Parcelable. Das Problem ist, ich versuche, ein Mitglied in der Klasse, das ein ArrayList<Parcelable>Objekt ist, auf das Paket zu schreiben . Das ArrayListist Serializableund die Objekte ( ZigBeeDev) in der Liste sind Parcelable.
Hier ist der relevante Code:
package com.gnychis.coexisyst;
import java.util.ArrayList;
import java.util.Iterator;
import android.os.Parcel;
import android.os.Parcelable;
public class ZigBeeNetwork implements Parcelable {
public String _mac; // the source address (of the coordinator?)
public String _pan; // the network address
public int _band; // the channel
ArrayList<Integer> _lqis; // link quality indicators (to all devices?)
ArrayList<ZigBeeDev> _devices; // the devices in the network
public void writeToParcel(Parcel out, int flags) {
out.writeString(_mac);
out.writeString(_pan);
out.writeInt(_band);
out.writeSerializable(_lqis);
out.writeParcelable(_devices, 0); // help here
}
private ZigBeeNetwork(Parcel in) {
_mac = in.readString();
_pan = in.readString();
_band = in.readInt();
_lqis = (ArrayList<Integer>) in.readSerializable();
_devices = in.readParcelable(ZigBeeDev.class.getClassLoader()); // help here
}
public int describeContents() {
return this.hashCode();
}
public static final Parcelable.Creator<ZigBeeNetwork> CREATOR =
new Parcelable.Creator<ZigBeeNetwork>() {
public ZigBeeNetwork createFromParcel(Parcel in) {
return new ZigBeeNetwork(in);
}
public ZigBeeNetwork[] newArray(int size) {
return new ZigBeeNetwork[size];
}
};
//...
}
Ich habe zwei Stellen mit "// help here" markiert, um zu verstehen, wie man richtig auf das Paket schreibt und es rekonstruiert. Wenn ZigBeeDevheißt Parcelable(richtig getestet), wie mache ich das richtig?
ZigBeeDev.Creatorsein sollteZigBeeDev.CREATOR. Ich habe jedes Mal einen Fehler erhalten, bis mir klar wurde, dass es zwei verschiedene Schöpfer gibt, die ich in meinem eigenen Projekt verwenden kann.