title: Trying to retrieve data from parcel
body: <p>I have an Order Object that contains an ArrayList of MenuItem Objects. Both classes implement the Parcelable interface.</p>
  
  <p>When I attempt to retrieve the object from the Intent in the new activity I get the following error: </p>
  
  <blockquote>
    <p>java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.waitron5/com.example.waitron5.SectionsActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.example.waitron5.MenuItem</p>
  </blockquote>
  
  <p>Here is the code where I send the Order object:</p>
  
  <pre><code>i = new Intent(v.getContext(), SectionsActivity.class);
              i.putExtra("data", order);
              startActivity(i);
  </code></pre>
  
  <p>Here is the doe where I retrieve the Order object:</p>
  
  <pre><code>Intent i = getIntent();
      if(i != null &amp;&amp; i.hasExtra("data"))
      {
          order = i.getParcelableExtra("data");
          Toast.makeText(
              this.getApplicationContext(), 
              "recieved order object, covers: " + 
                  order.getCovers() + 
                  " table no: " + 
                  order.getTable() + 
                  " order size: " + 
                  order.getItems().size(), 
              Toast.LENGTH_SHORT).show();
  </code></pre>
  
  <p>Order class:</p>
  
  <pre><code>package com.example.waitron5;
  
  import java.util.ArrayList;
  import android.os.Parcel;
  import android.os.Parcelable;
  
  public class Order implements Parcelable {
  
      private int covers;
      private int table;
      private ArrayList&lt;MenuItem&gt; items;
  
  
      public Order(){
          super();
          this.items = new ArrayList&lt;MenuItem&gt;();
  
      }
  
      public static final Parcelable.Creator&lt;Order&gt; CREATOR = 
      new Parcelable.Creator&lt;Order&gt;() {
  
          @Override
          public Order createFromParcel(Parcel source) {
              return new Order(source);
          }
  
          @Override
          public Order[] newArray(int size) {
              return new Order[size];
          }
  
  
      };
  
      public Order(int covers, int table) {
          super();
          this.covers = covers;
          this.table = table;
          this.items = new ArrayList&lt;MenuItem&gt;();
      }
  
      public int getCovers() {
          return covers;
      }
  
      public void setCovers(int covers) {
          this.covers = covers;
      }
  
      public int getTable() {
          return table;
      }
  
      public void setTable(int table) {
          this.table = table;
      }
  
      public ArrayList&lt;MenuItem&gt; getItems() {
          return items;
      }
  
      public void setItems(ArrayList&lt;MenuItem&gt; items) {
          this.items = items;
      }
  
      //add to order
      public void addToOrder(MenuItem m){
          items.add(m);
      }
  
      //remove from order
      public void removeFromOrder(MenuItem m){
          items.remove(m);
      }
  
      public Order(Parcel source) {
          this();
          readFromParcel(source);
      }
  
      @Override
      public int describeContents() {
          // TODO Auto-generated method stub
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel dest, int flags) {
          // TODO Auto-generated method stub
          dest.writeInt(covers);
          dest.writeInt(table);
          dest.writeList(items);
      }
  
      @SuppressWarnings("unchecked")
      private void readFromParcel(Parcel source) {
          // TODO Auto-generated method stub
          covers = source.readInt();
          table = source.readInt();
          source.readList(items, null);
  
      }
  }
  </code></pre>
  
  <p>MenuItem class:</p>
  
  <pre><code>package com.example.waitron5;
  
  import android.os.Parcel;
  import android.os.Parcelable;
  
  public class MenuItem implements Parcelable {
  
      private String name;
      private double price;
      private int qty;
      private String info;
  
      public MenuItem(String name, double price) {
          super();
          this.name = name;
          this.price = price;
      }
      public MenuItem() {
          // TODO Auto-generated constructor stub
      }
      public String getName() {
          return name;
      }
      public void setName(String name) {
          this.name = name;
      }
      public double getPrice() {
          return price;
      }
      public void setPrice(double price) {
          this.price = price;
      }
  
      public int getQty() {
          return qty;
      }
      public void setQty(int qty) {
          this.qty = qty;
      }
      public String getInfo() {
          return info;
      }
      public void setInfo(String info) {
          this.info = info;
      }
      @Override
      public String toString() {
          return name;
      }
  
  
      //Parcelable methods.
      public static final Parcelable.Creator&lt;MenuItem&gt; CREATOR = 
          new Parcelable.Creator&lt;MenuItem&gt;() {
  
          @Override
          public MenuItem createFromParcel(Parcel source) {
              return new MenuItem(source);
          }
  
          @Override
          public MenuItem[] newArray(int size) {
              return new MenuItem[size];
          }
      };
  
      public MenuItem(Parcel source) {
          this();
          readFromParcel(source);
      }
  
      private void readFromParcel(Parcel source) {
          name = source.readString();
          price = source.readDouble();
      }
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel dest, int flags) {
          dest.writeString(name);
          dest.writeDouble(price);
      }
  }
  </code></pre>
  
  <p>Any  ideas as to what may be happening?</p>