I want to pass my object oManagement from activity X to Y.
In X:
oManagement = new OrdersManagement(); myIntent = new Intent(this, Y.class); Then I fill my oManagement object with separate thread.
Then I am waiting when oManagement filled and start another activity:
while (oManagement.allOrders.size() == 0) { try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } if (oManagement.allOrders.size() > 0) { myIntent.putExtra("OrdersManagementObject", oManagement); this.startActivity(myIntent); } } And in my Y Activity:
Bundle b = this.getIntent().getExtras(); if (b != null) { oManagement = b.getParcelable("OrdersManagementObject"); } And now surprise -> oManagement is not null, but oManagement.allOrders.size() is 0! :( So i pass my object, but ArrayList inside by object is 0 (in moment of passing was 1 element inside that Array).
How to fix that?
EDIT:
OrdersManagement class:
public class OrdersManagement implements Parcelable { public ArrayList<QuantorsOrder> allOrders = new ArrayList<QuantorsOrder>(); public OrdersManagement() { } public OrdersManagement(Parcel in) { } public static final Creator<OrdersManagement> CREATOR = new Creator<OrdersManagement>() { @Override public OrdersManagement createFromParcel(Parcel in) { return new OrdersManagement(in); } @Override public OrdersManagement[] newArray(int size) { return new OrdersManagement[size]; } }; public void updateListOfOrders(JSONArray jsonArray) throws JSONException { if (jsonArray != null && jsonArray.length() > 0) { JSONObject json; for (int i = 0; i < jsonArray.length(); i++) { json = (JSONObject)jsonArray.get(i); if(!IsOrderAlreadyExists(json)) addOrder(json); } } } private boolean IsOrderAlreadyExists(JSONObject json) throws JSONException { if (allOrders.isEmpty()) return false; else { for(QuantorsOrder order : allOrders) { if (String.valueOf(order.getId()).equals(json.get("id").toString())) { return true; } } return false; } } private void addOrder(JSONObject json) throws JSONException { allOrders.add(new QuantorsOrder(json)); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { } }
OrdersManagementclass. Possible that there is a parceling problem there.startActivity()resides in an infinite loopwhile (oManagement.allOrders.size() == 0)work when you haveif (oManagement.allOrders.size() > 0)inside that loop?