android: problem mit der Serialisierbaren Objekt in Absicht
Hallo ich habe ein problem mit einer Klasse möchte ich weitergeben in eine Absicht, indem er ihn in die putExtras()
Seine serialisierbar und der code sieht so 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, dass y jetzt eine ArrayList und nicht mehr ObjectB, so kann ich es umwandeln..
wenn ich den code ändern, um
public class ObjectB implements java.io.Serializable {...}
funktioniert es einwandfrei
Nur aus Neugier, was ist ein "Vorsatz" in diesem Zusammenhang?
ok, ich habe gerade die android-tag (mal wieder), eine Absicht, ein android-interne Sache
Ah. Danke! 15 Zeichen! Juhuu!
ArrayLists nicht Serializable implementieren, können Sie mit einem vector oder schreiben Sie Ihre eigenen speichern und laden-Funktionen für Serialisierbar.
wenn ich die surround-obeject was erweitert arraylist mit einem anderen Objekt, das einfach nur implementiert serial. als ist es kein problem, also ich denke das die Serialisierung der arraylist funktioniert..?
ok, ich habe gerade die android-tag (mal wieder), eine Absicht, ein android-interne Sache
Ah. Danke! 15 Zeichen! Juhuu!
ArrayLists nicht Serializable implementieren, können Sie mit einem vector oder schreiben Sie Ihre eigenen speichern und laden-Funktionen für Serialisierbar.
wenn ich die surround-obeject was erweitert arraylist mit einem anderen Objekt, das einfach nur implementiert serial. als ist es kein problem, also ich denke das die Serialisierung der arraylist funktioniert..?
InformationsquelleAutor Simon Heinen | 2009-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durch die Implementierung von java.util.List und java.io.Serializable in Ihre Klasse, Sie haben ausgelöst diese android-bug.
Ja, das tut es scheinen, albern bis LinkedLists in Serializables in mehreren Umständen.
Fehler von 2009, immer noch hier 3 Jahre später 🙁
Noch immer hier, und seine 2014 jetzt 🙁
2016, und es lebt immer noch...
InformationsquelleAutor Pavel Lapin
Ich vermute, was passiert ist, da Sie nicht deklarieren ObjectB als serialisierbar es "falling back", um die jüngsten übergeordnete Objekt ist. Also, wenn Sie es in dem Bundle sind Sie nicht wirklich setzen in ObjectB, aber ObjectB cast zurück zu ArrayList.
Ich glaube, Sie gehen zu müssen, gehen Sie mit der zweiten ("funktioniert einwandfrei") - code.
Warum können nicht Sie nur haben ObjectB erweitern ObjectA und implementieren Serializable?
InformationsquelleAutor Jeremy Logan
Wie sind Sie zu deklarieren ObjectB, bevor Sie passieren es in dem bundle?
Von dem, was ich verstehe Ihre Frage bekommen Sie keine Fehler, wenn Sie passieren im bundle, nur wenn es zu entfernen.
Versuchen Sie beim abrufen Ihrer ObjectB in eine ObjectB Typ direkt so:
InformationsquelleAutor James
Den
ObjectA
imArrayList
sollte implementiert die SchnittstelleParcelable
. Danach können Sie Ihre arraylists in der Absicht, und Sie in eine andere Aktivität.InformationsquelleAutor tony