bekommen möchte ich oManagement
X aus der Tätigkeit mein Objekt zu übergebenkann ich nicht Gegenstand von einer Aktivität zur anderen (android)
In X Y:
oManagement = new OrdersManagement();
myIntent = new Intent(this, Y.class);
Dann fülle ich meine oManagement Objekt mit separatem Thread.
Dann warte ich, wenn oManagement gefüllt und eine andere Aktivität starten:
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);
}
}
Und in meiner Y Aktivität:
Bundle b = this.getIntent().getExtras();
if (b != null) {
oManagement = b.getParcelable("OrdersManagementObject");
}
Und jetzt Überraschung ->oManagement
ist nicht null
, aber oManagement.allOrders.size()
0 ! :(Also gebe ich mein Ziel, aber ArrayList
innerhalb von Objekt 0 (in Moment des Führens war 1 Element in diesem Array)
Wie das beheben
EDIT:.?
OrdersManagement Klasse:
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) {
}
}
Wir müssen wahrscheinlich die Quelle für die 'OrdersManagement' Klasse sehen. Möglich, dass dort ein Parzellierungsproblem vorliegt. – emerssso
Es scheint, dass Ihre 'startActivity()' befindet sich in einer Endlosschleife – Shaishav
überprüfen Sie, wie Sie den Schlüssel in Ihrer zweiten Aktivität extrahieren. Ich werde den Schlüssel in der ersten Aktivität so deklarieren. public final static Zeichenfolge EXTRA_ORDERSMANAGEMENT = "OrdersManagementObject"; Dann extrahiere ich den Schlüssel in der zweiten Aktivität wie dieses Bündel b = this.getIntent(). GetExtras (MainActivity.EXTRA_ORDERSMANAGEMENT); – AK1