Hi,
um wieder den Einstieg in die Android Programmierung zu schaffen, bin ich gerade dabei eine App zu programmieren.
Bei der App muss ich ein Objekt in eine SQLite Datenbank speichern. Im Internet hab ich gelesen, dass dies durch Serialisierung möglich ist. Bei mir funktioniert es jedoch leider noch nicht.
Das Problem tritt in der Methode objektDeserialisieren (Der Aufruf dieser Methode geschieht in "benachrichtigungHinzufuegen") auf. Da läuft irgendetwas schief und es wird der catch-Teil aufgerufen.
Hier mein Code:
Klasse, in der das Objekt serialisiert wird: (Ich hab den Code aus Platzgründen gekürzt)
Hier die Klasse des Objekts, das ich speichern will: (auch gekürzt)
Wenn ich das Programm so ausführe, wird die Exception "java.io.StreamCorruptedException" agezeigt. Im LogCat steht "01-15 18:13:48.408: W/InputEventReceiver(29935): Attempted to finish an input event but the input event receiver has already been disposed."
Hat jemand eine Idee?
mfg
um wieder den Einstieg in die Android Programmierung zu schaffen, bin ich gerade dabei eine App zu programmieren.
Bei der App muss ich ein Objekt in eine SQLite Datenbank speichern. Im Internet hab ich gelesen, dass dies durch Serialisierung möglich ist. Bei mir funktioniert es jedoch leider noch nicht.
Das Problem tritt in der Methode objektDeserialisieren (Der Aufruf dieser Methode geschieht in "benachrichtigungHinzufuegen") auf. Da läuft irgendetwas schief und es wird der catch-Teil aufgerufen.
Hier mein Code:
Klasse, in der das Objekt serialisiert wird: (Ich hab den Code aus Platzgründen gekürzt)
Java:
public class HinzufuegenActivity extends Activity implements OnClickListener {
Dialog d1;
Benachrichtigung b;
Benachrichtigung b2;
//Unwichtiger Code entfernt
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hinzufuegen);
//Unwichtiger Code entfernt
}
public void benachrichtigungHinzufuegen() {
if (rbSchnell.isChecked()) {
b = new Benachrichtigung(this,"schnell",edTitel.getText().toString());
if(objektDeserialisieren(objektSerialisieren())) {
b2.setContext(this);
b2.showNotification();
}
// finish();
}
else {
b = new Benachrichtigung(this,"erweitert",edTitel.getText().toString(),edErinnerungstext.getText().toString(),rbDauerhaft.isChecked());
if(objektDeserialisieren(objektSerialisieren())) {
b2.setContext(this);
b2.showNotification();
}
// finish();
}
}
public String objektSerialisieren() {
String serializedObject = "";
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(b);
so.flush();
serializedObject = bo.toString();
} catch (Exception e) {
System.out.println(e);
}
return serializedObject;
}
public boolean objektDeserialisieren(String serializedObject) {
try {
byte b[] = serializedObject.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
b2 = (Benachrichtigung) si.readObject();
return true;
} catch (Exception e) {
d1 = new Dialog(this,e.toString());
d1.showDialog();
return false;
}
}
}
Hier die Klasse des Objekts, das ich speichern will: (auch gekürzt)
Java:
public class Benachrichtigung implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private transient NotificationOpenHandler openHandler;
private transient Context con;
private String typ;
private String titel;
private String text;
private boolean onGoing;
// private int id;
public Benachrichtigung(Context pCon, String pTyp, String pTitel, String pText, boolean pOnGoing) {
con = pCon;
typ = pTyp;
titel = pTitel;
text = pText;
onGoing = pOnGoing;
}
public Benachrichtigung(Context pCon, String pTyp, String pTitel) {
con = pCon;
typ = pTyp;
titel = pTitel;
text ="";
onGoing = true;
}
public void setContext (Context pCon) {
con = pCon;
}
Wenn ich das Programm so ausführe, wird die Exception "java.io.StreamCorruptedException" agezeigt. Im LogCat steht "01-15 18:13:48.408: W/InputEventReceiver(29935): Attempted to finish an input event but the input event receiver has already been disposed."
Hat jemand eine Idee?
mfg