Frage

Hallo ich habe ein Problem mit einer Klasse i in der Absicht übergeben will, indem sie es in die putExtras setzen () Seine serializable und der Code sieht wie folgt aus:

public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...}

public class ObjectB extends ObjectA {...}


...
Bundle extras = new Bundle();
extras.putSerializable("blabla", ObjectB);
intent.putExtras(extras);

...

Object y = getIntent().getExtras().get("blabla");

Das Problem ist jetzt, dass y eine Arraylist und nicht mehr ein ObjectB so dass ich es werfen kann nicht .. wenn ich den Code ändern, um

public class ObjectB implements java.io.Serializable {...}

es funktioniert

War es hilfreich?

Lösung

sowohl java.util.List und java.io.Serializable in Ihrer Klasse Durch die Implementierung Sie haben diese ausgelöst android Fehler .

Andere Tipps

Ich vermute, was passiert, ist, dass da erklären Sie nicht ObjectB als serializable es die „zurückzufallen“, um die jüngste übergeordnete Objekt, das ist. Also, wenn Sie es in das Bundle setzen Sie sind nicht wirklich in ObjectB setzen, aber ObjectB zurückgeworfen zu Arraylist.

Ich glaube, du gehst mit dem zweiten gehen zu müssen ( „funktioniert“) Code.

Wie erklären Sie ObjectB, bevor Sie es in das Bündel passieren? nur von dem, was ich Ihrer Frage verstehen Sie bekommen keinen Fehler, wenn Sie in dem Bündel passieren, wenn es zu entfernen. Versuchen Sie retreiving Ihre ObjectB in eine ObjectB Art direkt wie folgt aus:

ObjectB y = (ObjectB) getIntent().getExtras().get("blabla");

Die ObjectA in ArrayList sollte die Schnittstelle Parcelable implementiert. Danach können Sie Ihre Arraylisten in der Absicht setzen, und sie in einer anderen Tätigkeit bekommen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top