Unmarshalling des erreurs dans l'application Android personnalisé parcelable classes

Pour mon application Android, je reçois plusieurs unmarshalling erreurs même si je pense que j'ai fait tout ce qui est nécessaire pour enregistrer et charger des objets via Parcelables. Pouvez-vous me dire quel est le problème avec mon code?

Erreur 1:

java.lang.RuntimeException: Unable to start activity ComponentInfo
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@41279860: Unmarshalling unknown type code 6619241 at offset 1372
at android.os.Parcel.readValue(Parcel.java:1922)
at android.os.Parcel.readMapInternal(Parcel.java:2094)
at android.os.Bundle.unparcel(Bundle.java:223)
at android.os.Bundle.getParcelable(Bundle.java:1158)
at android.app.Activity.onCreate(Activity.java:860)
at my.app.package.PlayComputer.onCreate(PlayComputer.java:1012)
at android.app.Activity.performCreate(Activity.java:4465)

Ligne 1012 dans MyActivity est l'appel à super.onCreate(savedInstanceState); dans le Activity's onCreate().

protected void onSaveInstanceState(Bundle savedInstanceState) {
    if (myObject == null) {
        savedInstanceState.putParcelable("myObject", null);
    }
    else {
        savedInstanceState.putParcelable("myObject", myObject);
    }
    savedInstanceState.putInt(...);
    savedInstanceState.putString(...);
    savedInstanceState.putBoolean(...);
    super.onSaveInstanceState(savedInstanceState);
}

myObject est de classe MyObject qui possède les méthodes suivantes:

public void writeToParcel(Parcel out, int flags) {
    out.writeIntArray(...);
    out.writeInt(...);
    out.writeStringArray(...);
    out.writeString(...);
    out.writeParcelableArray(..., flags);
}

public static final Parcelable.Creator<MyObject> CREATOR = new Parcelable.Creator<MyObject>() {
    public MyObject createFromParcel(Parcel in) {
        try {
            if (in == null) {
                return null;
            }
            else {
                return new MyObject(in);
            }
        }
        catch (Exception e) {
            return null;
        }
    }
    public MyObject[] newArray(int size) {
        return new MyObject[size];
    }
};

private MyObject(Parcel in) {
    in.readIntArray(...);
    ... = in.readInt();
    in.readStringArray(...);
    ... = in.readString();
    ... = (OtherObject[]) in.readParcelableArray(OtherObject.class.getClassLoader());
}

Erreur 2:

java.lang.RuntimeException: Unable to start activity ComponentInfo
Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling:
at android.os.Parcel.readParcelable(Parcel.java:1971)
at android.os.Parcel.readValue(Parcel.java:1859)
at android.os.Parcel.readMapInternal(Parcel.java:2099)
at android.os.Bundle.unparcel(Bundle.java:223)
at android.os.Bundle.getParcelable(Bundle.java:1158)
at android.app.Activity.onCreate(Activity.java:905)
at my.app.package.PlayComputer.onCreate(SourceFile:1012)

Même les fichiers et les classes.

Erreur 3:

java.lang.RuntimeException: Unable to start activity ComponentInfo
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@4051aff8: Unmarshalling unknown type code 7340149 at offset 1276
at android.os.Parcel.readValue(Parcel.java:1913)
at android.os.Parcel.readMapInternal(Parcel.java:2083)
at android.os.Bundle.unparcel(Bundle.java:208)
at android.os.Bundle.getParcelable(Bundle.java:1100)
at my.app.package.PlayComputer.onCreate(SourceFile:1111)

Cette fois, le fait de causer ligne (1111) est la suivante:

myObject = (MyObject) savedInstanceState.getParcelable("myObject");
Est le GameState(Colis) constructeur d'une faute de frappe et que vous vouliez écrire un MyObject(Colis) constructeur?
Oui, désolé!
Êtes-vous séparément de la création de la matrice des objets dans votre constructeur? Le readXXXArray() méthodes nécessitent une entièrement initialisé tableau instance d'être passée. Vous pouvez utiliser le createXXXArray() méthodes pour obtenir une nouvelle instance de ce tableau retourné à vous.
Ces tableaux ont été déclarés avant, bien sûr, mais pas nécessairement encore initialisés. À partir de la documentation, je ne peux pas voir que c'est à cette condition: developer.android.com/reference/android/os/Parcel.html
Eh bien, la documentation est très pauvre pour Parcel et Parcelable, donc je ne vois pas les différences de readXXXArray() et writeXXXArray.

OriginalL'auteur caw | 2012-12-21