Lesen und Schreiben von Arrays von Parcelable-Objekten

Ich habe folgende Klasse, die ein Array von Objekten von / zu einem Paket liest und schreibt:

<code>class ClassABC extends Parcelable {
    MyClass[] mObjList;

    private void readFromParcel(Parcel in) {
        mObjList = (MyClass[]) in.readParcelableArray(
                com.myApp.MyClass.class.getClassLoader()));
    }

    public void writeToParcel(Parcel out, int arg1) {
        out.writeParcelableArray(mObjList, 0);
    }

    private ClassABC(Parcel in) {
        readFromParcel(in);
    }

    public int describeContents() {
        return 0;
    }

    public static final Parcelable.Creator<ClassABC> CREATOR =
            new Parcelable.Creator<ClassABC>() {

        public ClassABC createFromParcel(Parcel in) {
            return new ClassABC(in);
        }

        public ClassABC[] newArray(int size) {
            return new ClassABC[size];
        }
    };
}
</code>

Im obigen Code bekomme ich eineClassCastException beim lesenreadParcelableArray:

FEHLER / AndroidRuntime (5880): Auslöser: java.lang.ClassCastException: [Landroid.os.Parcelable;

Was ist im obigen Code falsch? Wenn ich das Objektarray schreibe, sollte ich das Array zuerst in ein konvertierenArrayList?

AKTUALISIEREN:

Ist es in Ordnung, ein Object-Array in ein zu konvertieren?ArrayList und zum Paket hinzufügen? Zum Beispiel beim Schreiben:

<code>    ArrayList<MyClass> tmpArrya = new ArrayList<MyClass>(mObjList.length);
    for (int loopIndex=0;loopIndex != mObjList.length;loopIndex++) {
        tmpArrya.add(mObjList[loopIndex]);
    }
    out.writeArray(tmpArrya.toArray());
</code>

Beim Lesen:

<code>    final ArrayList<MyClass> tmpList = 
            in.readArrayList(com.myApp.MyClass.class.getClassLoader());
    mObjList= new MyClass[tmpList.size()];
    for (int loopIndex=0;loopIndex != tmpList.size();loopIndex++) {
        mObjList[loopIndex] = tmpList.get(loopIndex);
    }
</code>

Aber jetzt bekomme ich eineNullPointerException. Ist der obige Ansatz richtig? Warum wirft es eine NPE?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage