Parcelable ecountered IOException writing serializable object / NotSerializableException android.database.sqlite.SQLiteDatabase

  • Antworten:1
Dani Sahne
  • Forum-Beiträge: 107

15.10.2014, 22:15:50 via Website

Hallo,

ich habe folgendes Problem:
Meine App besteht aus einer ItemActivity die zwei Fragmente ViewFragment und EditFragment besitzen. Meine Datenbank Klasse ist ItemsDataSource. Damit ich nicht jedes mal die DataSource neu initialisieren muss übergebe ich die sie mit einem Bundle und hol sie mir in den Fragments wieder. Mein Code schaut vereinfach so aus.

ItemsDataSource

...
class ItemsDataSource implements Serializable{
    SQLiteDatabase db;
....

ItemAcitivty

...
  ItemsDataSource ds = new ItemsDataSource();
  bundle.putSerializable("keyDs",ds); 
....

ViewFragment

...

    ItemsDataSource ds;;
....
ds = getIntent().getExtra().getSerializable("keyDs");

Beim EditFragment verhält es sich genau so wie beim ViewFragment

Die Erste Fehlermeldung sagt mir das ich ItemsDataSource nicht serialisieren kann, die zweite dass es daran liegt dass SQLiteDatabase, was ja eine Variable in ItemsDataSource ist, nicht serializierbar ist. Ich habe auch schon dass Schlüsselwort "transient" probiert, hat aber die selbe Fehlermeldung gegeben.

Das Problem besteht erst seit heute, bisher ging das wunderbar. Was kann ich tun um das Problem zu lösen? Parcelable zu verwenden hab ich auch schon versucht, allerdings muss ich ja mit out.writeInt() bzw out.writeString(), usw angeben welche Variablen ich serialisieren will, aber da gibt es keine methode out.writeObject(), so dass ich die Datenbank mit serialisier.

Lg Dani

Antworten
Andreas S.
  • Forum-Beiträge: 76

17.10.2014, 19:50:53 via App

Ein anderer Ansatz wäre sinnvoll.

Die Klasse Fragment besitzt die Methode getActivity().

Instanzier deine Klasse in der Activity und Greif über einen Getter auf das Objekt zu.

Oder generier tatsächlich in jedem Fragment einen Zugriff auf die Datenbank. Eigentlich spricht meinrr ansicht nach nichts dagegen.

Antworten