title: ClassNotFoundException when unmarshalling and really don't know why
body: <p><strong>FIXED: ANSWER AT BOTTOM</strong></p>
  
  <p>I am writing an android app for a project and im trying to use parcelable objects.
  I have 2 parcalable classes. The first is a normal class with only 2 arguments.
  The second one is a class with additional attributes and a list with type from the first class and an additional Object of it.</p>
  
  <p>Every time i try to pass an object of the second class to another Activity, i get android.os.BadParcelableException: ClassNotFoundException when unmarshalling</p>
  
  <p>and the app closes.</p>
  
  <p>I searched for hours now and tried multiple solutions but nothing helped.
  The Error doesnt come when i only pass an object of the first class to another activity..</p>
  
  <p>Here my code:</p>
  
  <pre><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&lt;Cart&gt; CREATOR = new Parcelable.Creator&lt;Cart&gt;() {
  
              @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();
  }
  }
  </code></pre>
  
  <p>My Second Class:</p>
  
  <pre><code>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&lt;Cart&gt; 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&lt;Cart&gt;(); }
      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&lt;Cart&gt; getCarts() {
      return carts;
  }
  public void setCarts(List&lt;Cart&gt; 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&lt;CurrentUser&gt; CREATOR = new Parcelable.Creator&lt;CurrentUser&gt;() {
  
      @Override
      public CurrentUser createFromParcel(Parcel in) {
          return new CurrentUser(in);
      }
  
      @Override
      public CurrentUser[] newArray(int size) {
          return new CurrentUser[size];
      }
  };
  }
  </code></pre>
  
  <p>Please help me.</p>
  
  <p>Edit: Here my Logcat</p>
  
  <pre><code>    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.&lt;init&gt;(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
  </code></pre>
  
  <p><strong>FIX</strong>
  I finally found the error and I just can't freaking belive it!!!</p>
  
  <p>Searched for almost 1 1/2 days and all it needed was switching the last two methods in readFromParcel or writeToParcel because they were not in the exact same order!!</p>
  
  <p>Can't believe it but now it works.
  For every one who gets the same mistake, check the order of writeToParcel and readFromParcel.
  Thay have to be in the same order.</p>
  
  <p>Have a nice day, Christian**</p>