ClassCastException beim Abrufen von Daten aus dem Bundle unter Android

8

Ich habe einen Zustand, den ich über den Lebenszyklus eines Fragments speichern möchte. Es funktioniert gut, wenn der Bildschirm zum Beispiel dreht, aber wenn der Prozess getötet und von der Festplatte wiederhergestellt wurde (ich denke, das ist, wie es funktioniert), bekomme ich eine ClassCastException. Hier ist ein Code:

Initialisierung:

%Vor%

Speichern der Daten:

%Vor%

Die Ausnahme, die ich von der Besetzung in onCreate :

bekomme %Vor%

Ich weiß, dass es besser ist, Pakete auf Android zu verwenden, aber ich verstehe immer noch nicht, wie das jemals passieren könnte.

Irgendwelche Ideen?

    
kombucha 10.04.2013, 09:54
quelle

2 Antworten

11

Interessante Informationen zu ähnlichen Fragen finden Sie hier

  

Jedes Objekt, das sowohl java.util.List als auch java.io.Serializable implementiert, wird   ArrayList nach intent.putExtra (EXTRA_TAG,   suchObjekt) / startActivity (intent) / intent.getSerializableExtra (EXTRA_TAG).

Ich wage zu sagen, dass das Gleiche gilt für alles, was serializable und map implementiert. Diese HashMap ist die Standardeinstellung, die Sie erhalten.

Eine Lösung in diesem Fall, die wie ein Fehler aussieht, wäre etwas wie:

%Vor%

Der obige Code wurde nicht getestet, sollte aber funktionieren. Dieser Code wird weiterhin funktionieren, wenn der Fehler aufgrund der Verwendung von Schnittstellen behoben wird. So können Sie sicher sein, wenn Ihr Client ein Android-Update erhält, dass Ihr Code immer noch dasselbe tut, anstatt zu stürzen und sich darüber zu beschweren, dass Sie keine HashMap auf eine LinkedHashMap-Karte werfen können.

    
Joey Roosing 10.04.2013, 10:23
quelle
-2

Das Problem ist, dass die einfach zurückgegebene Referenz keine Referenz auf eine Instanz von LinkedHashMap ist. Wenn die Funktion Return LinkedHashMap nur eine LinkedHashMap zurückgibt, kann sie nicht in HashMap umgewandelt werden.

    
Ankitkumar Makwana 10.04.2013 10:06
quelle

Tags und Links