ClassNotFoundException quand unmarshalling et ne sais vraiment pas pourquoi

CORRIGÉ: RÉPONSE À FOND

Je suis en train d'écrire une application android pour un projet et im essayant d'utiliser parcelable objets.
J'ai 2 parcalable classes. La première est une classe normale avec seulement 2 arguments.
La seconde est une classe avec des attributs supplémentaires et une liste de type de la première classe et un Objet supplémentaire.

Chaque fois que j'essaie de passer un objet de la deuxième classe à une autre Activité, je android.os.BadParcelableException: ClassNotFoundException quand unmarshalling

et l'application se ferme.

J'ai cherché pendant des heures maintenant et essayé plusieurs solutions mais rien n'y fit.
L'Erreur de ne pas venir quand je ne transmettez un objet de la première classe à une autre activité..

Voici mon code:

package de.softwareproject.v3.testclasses;

import android.os.Parcel;
import android.os.Parcelable;

public class Cart implements Parcelable {

private String name;
private Integer priceInCents;

public Cart() {}

public Cart(Parcel in){
    readFromParcel(in);
}

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Integer getPriceInCents() {
    return priceInCents;
}
public void setPriceInCents(Integer priceInCents) {
    this.priceInCents = priceInCents;
}

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

            @Override
            public Cart createFromParcel(Parcel source) {
                return new Cart(source);
            }

            @Override
            public Cart[] newArray(int size) {
                return new Cart[size];
            }
};

@Override
public int describeContents() {
    //TODO Auto-generated method stub
    return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(name);
    dest.writeInt(priceInCents);
}

private void readFromParcel(Parcel in) {
    name = in.readString();
    priceInCents = in.readInt();
}
}

Mon Deuxième Classe:

package de.softwareproject.v3.testclasses;
import java.util.ArrayList;
import java.util.List;
import android.os.Parcel;
import android.os.Parcelable;
public class CurrentUser implements Parcelable {
private String username;
private String eMail;
private String password;
private List<Cart> carts;
private Cart activeCart;
public CurrentUser() {}
public CurrentUser(Parcel in) {
readFromParcel(in);
}
private void readFromParcel(Parcel in) {
username = in.readString();
eMail = in.readString();
password = in.readString();
activeCart = in.readParcelable(de.softwareproject.v3.testclasses.Cart.class.getClassLoader());
if (carts == null){ carts = new ArrayList<Cart>(); }
in.readTypedList(carts, Cart.CREATOR);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String geteMail() {
return eMail;
}
public void seteMail(String eMail) {
this.eMail = eMail;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<Cart> getCarts() {
return carts;
}
public void setCarts(List<Cart> carts) {
this.carts = carts;
}
public Cart getActiveCart() {
return activeCart;
}
public void setActiveCart(Cart activeCart) {
this.activeCart = activeCart;
}
@Override
public int describeContents() {
//TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(username);
dest.writeString(eMail);
dest.writeString(password);
dest.writeTypedList(carts);
dest.writeParcelable(activeCart, flags);
}
public static final Parcelable.Creator<CurrentUser> CREATOR = new Parcelable.Creator<CurrentUser>() {
@Override
public CurrentUser createFromParcel(Parcel in) {
return new CurrentUser(in);
}
@Override
public CurrentUser[] newArray(int size) {
return new CurrentUser[size];
}
};
}

S'il vous plaît aider moi.

Edit: Voici mon Logcat

    03-15 16:24:08.139: E/Parcel(689): Class not found when unmarshalling: ??, e: java.lang.ClassNotFoundException: ??
03-15 16:24:08.149: D/AndroidRuntime(689): Shutting down VM
03-15 16:24:08.149: W/dalvikvm(689): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
03-15 16:24:08.229: E/AndroidRuntime(689): FATAL EXCEPTION: main
03-15 16:24:08.229: E/AndroidRuntime(689): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.softwareproject.v3/de.softwareproject.v3.Startpage}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ??
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Looper.loop(Looper.java:137)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.ActivityThread.main(ActivityThread.java:4340)
03-15 16:24:08.229: E/AndroidRuntime(689):  at java.lang.reflect.Method.invokeNative(Native Method)
03-15 16:24:08.229: E/AndroidRuntime(689):  at java.lang.reflect.Method.invoke(Method.java:511)
03-15 16:24:08.229: E/AndroidRuntime(689):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-15 16:24:08.229: E/AndroidRuntime(689):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-15 16:24:08.229: E/AndroidRuntime(689):  at dalvik.system.NativeStart.main(Native Method)
03-15 16:24:08.229: E/AndroidRuntime(689): Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: ??
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Parcel.readParcelable(Parcel.java:1966)
03-15 16:24:08.229: E/AndroidRuntime(689):  at de.softwareproject.v3.testclasses.CurrentUser.readFromParcel(CurrentUser.java:26)
03-15 16:24:08.229: E/AndroidRuntime(689):  at de.softwareproject.v3.testclasses.CurrentUser.<init>(CurrentUser.java:19)
03-15 16:24:08.229: E/AndroidRuntime(689):  at de.softwareproject.v3.testclasses.CurrentUser$1.createFromParcel(CurrentUser.java:80)
03-15 16:24:08.229: E/AndroidRuntime(689):  at de.softwareproject.v3.testclasses.CurrentUser$1.createFromParcel(CurrentUser.java:1)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Parcel.readParcelable(Parcel.java:1992)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Parcel.readValue(Parcel.java:1854)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Parcel.readMapInternal(Parcel.java:2094)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Bundle.unparcel(Bundle.java:223)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.os.Bundle.getParcelable(Bundle.java:1158)
03-15 16:24:08.229: E/AndroidRuntime(689):  at de.softwareproject.v3.Startpage.onCreate(Startpage.java:34)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.Activity.performCreate(Activity.java:4465)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-15 16:24:08.229: E/AndroidRuntime(689):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
03-15 16:24:08.229: E/AndroidRuntime(689):  ... 11 more
03-15 16:24:10.289: I/Process(689): Sending signal. PID: 689 SIG: 9

FIXER
J'ai enfin trouvé l'erreur et je ne peux pas paniquer à y croire!!!

Cherché pendant près de 1 1/2 jours et il manquait la commutation des deux dernières méthodes en readFromParcel ou writeToParcel parce qu'ils n'étaient pas dans le même ordre!!

Ne peux pas le croire, mais maintenant il fonctionne.
Pour chaque celui qui obtient la même erreur, par chèque à l'ordre de writeToParcel et readFromParcel.
Elles doivent être dans le même ordre.

Bonne journée, Christian**

source d'informationauteur Christian Risch