Intent und getIntent.hasExtra("")

  • Hallo,


    Ich hab das problem, wen ich nach dem Start einer Activity abfragen will ob sie ein Extra enthält mit dem Key "DATABASE",
    doch leider erhalte ich jedes mal einen Fehler beim der Abfrage, die Abfrage lautet wie Folgt


    Java
    Intent o = getIntent();
       if (!(o.hasExtra("DATABASE"))) {
             return;
       }



    und das starten der Activity erfolgt per


    Java
    Intent i = new Intent(getApplicationContext(),Add_Item.class);
    i.putExtra("DATABASE",dataBaseControler);
    startActivity(i);


    Orginal fehler meldung


    Code
    java.lang.RuntimeException: Unable to start activity ComponentInfo{example.facebamm.dbaum.learnrussia/example.facebamm.dbaum.learnrussia.Add_Item}: java.lang.RuntimeException: Parcelable encountered IOException reading a Serializable object (name = example.facebamm.dbaum.learnrussia.DataBaseControler)
  • Joah, Du kannst halt keine komplexen Objekte einfach so als Extra übergeben.


    Übergib lieber die ID des Eintrags in Deiner Datenbank als Integer und hol' Dir den Eintrag dann in dem anderen Intent.


    (BTW: 'Mobile(s)' bedeutet die Art der Geräte, nicht die Mobilnummer. ;)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Nun leider übergebe ich kein einzelnes Item sonder die ganze Classe zum Steuern der Datenbank.



    Java
    //DatenBankKopf
    
    
    public class DataBaseControler extends SQLiteOpenHelper implements Serializable {


    Wenn ich eine Neue klasse erstelle, sollte es doch passieren das meine Einträge in der Datenbank eingebunden werden. ?

  • Was genau ist an meiner Aussage unklar?

    Quote

    Du kannst halt keine komplexen Objekte einfach so als Extra übergeben.

    Das Ganze hat natürlich einen Grund: Es bringt Dir nix. Dieses ganze Serialisieren und Deserialisieren macht einen gewaltigen Overhead und verbrennt wertvolle Resourcen.


    Nimmst Du statt Deines Helpers einen Content Provider für Deine Datenbank, kannst Du mit der ID eines Objektes eine ganze Menge anfangen.
    In Deinem Fall wird das Objekt ja erst hinzugefügt, Du brauchst dann also gar nichts übergeben und Dein add_item Intent gibt einfach die ID des angelegten Items zurück – was Du aber auch nicht brauchst, wenn Du die Datenbank beim Anzeigen der Übersicht neu abfragst.


    Nur der Vollständigkeit halber: Der Absturz passiert, weil irgendwas in der Implementierung Deiner Serializable Methoden in Deinem DataBaseController schief läuft, also weit bevor Dein zweites Intent angezeigt werden soll.
    Da musst Du halt mal ran.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ja, Pointer mitschleppen ist ein gängiger Weg in iOS.
    Korrigier mich, aber: In Android ist das der komplett falsche Weg.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!