I am trying to implement a activity which takes a list of object and passing to another activty for processing. But I get NPE. This is my code.
public class Order implements Parcelable { public static class OrderProduct { private String productId; private String qty; public OrderProduct(String productId, String qty) { this.productId = productId; this.qty = qty; } public String getProductId() { return productId; } public String getQty() { return qty; } public void setQty(String qty) { this.qty = qty; } @Override public String toString() { return "productId: " + productId + " qty: " + qty; } } private String customerId; private Map<String, OrderProduct> products; private OrderProduct product; public Order(String customerId) { this.customerId = customerId; products = new HashMap<String, OrderProduct>(); } public Order(Parcel in) { product.productId = in.readString(); product.qty = in.readString(); } public void setProduct(String productId, String qty) { product = products.get(productId); if (product == null) { product = new OrderProduct(productId, qty); } else { product.setQty(qty); } products.put(productId, product); } public Collection<OrderProduct> getProducts() { return products.values(); } public String getCustomerId() { return customerId; } @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("Order: customerId: " + customerId + " { "); for (OrderProduct product : products.values()) { sb.append(" { ").append(product.toString()).append(" } "); } sb.append(" } "); return sb.toString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // TODO Auto-generated method stub dest.writeString(product.getProductId()); dest.writeString(product.qty); } public static final Order.Creator<Order> CREATOR = new Order.Creator<Order>() { public Order createFromParcel(Parcel in) { return new Order(in); } public Order[] newArray(int size) { return new Order[size]; } }; } ############################# ACTIVITY 1 ################## @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.send_menu: //saveOrder(order); showOrderReview(); break; } return true; } ############## ACITIVITY 2 public class ReviewOrderActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.main); Intent i = getIntent(); Order myOrderObject = (Order) i.getParcelableExtra("order"); Collection<Order.OrderProduct> products = myOrderObject.getProducts(); System.out.println("Orderrrrrrrrrrrr : " + products.size()); for (Order.OrderProduct product : products){ Log.d("---", " product.getQty() "+product.getQty()+" "+product.getProductId()); } }