onActivityResult wird nicht (?) aufgerufen

  • Hallo zusammen,


    um mein Problem zu skizzieren muss ich wohl etwas ausholen (in der Hoffnung, es gibt noch einen ganz anderen, einfacheren Weg):
    meine App - bzw. die Launcher-Activity - lädt zum Programmstart (onCreate()) Daten aus verschiedenen (Text) Dateien.
    Während der Ausführung werden diese Daten dann modifiziert und zu onDestroy() wieder gespeichert. In einer zweiten Activity ("Add"), die sich von der Hauptactivity ("Main") aus aufruft, lassen sich weitere Daten hinzufügen.
    Die Daten sind in einer öffentlichen public static ArrayLis<String> von Main gespeichert
    Erstes Problem: wenn Add wieder beendet wird, wird bei Main wieder onCreate() aufgerufen, die Daten werde also neu geladen, bevor die Daten aus Add gespeichert werden konnten. Diese Daten sind also wieder weg.
    Um dieses Problem zu lösen, wollte ich Add mit setResult() die neuen Daten zurückgeben, damit sie dann mit onActivityResult() verarbeitet werden können.
    Das führt zu meinem zweiten und eigentlichen Problem: onActivityResult() wird nie aufgerufen. Main empfängt die Daten gar nicht erst.


    Ich starte Add durch folgenden Code:

    Java
    cmdAdd.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent addActivity = new Intent(Main.this, Add.class);
                    startActivityForResult(addActivity, RQCODE_ADD);
                }
     });

    in onActivityResult() passiert folgendes:



    und gesendet werden die Daten zu onDestroy() in Add:



    wobei onDestroy() auch wirklich aufgerufen wird...


    Was läuft hier also falsch bzw. welchen Anfängerfehler habe ich begangen? (Muss ich den Intent registrieren? ist setResult() hier fehl am Platz? was auch immer...)
    Wäre für jedwede Denkanstöße dankbar
    :)


    Grüße!

  • Das ganze hat sich soeben erübrigt:


    Das Problem war, dass die einzige Möglichkeit, die Hinzufügen-Activity zu verlassen, über den "Zurück"-Knopf neben dem Logo war.
    Und der ruft onDestroy() offenbar nicht auf - warum auch immer


    Naja, sei's drum :)

  • der ruft aber onBackPressed auf.


    Und nein der BackPress button ist nicht die einzige möglichkeit. Du kannst auch auf den Homebutton klicken und das system killt irgendwann deine anwendung, soweit ich weiß wird dann auch onDestroy aufgerufen. Also am besten lagerst du die funktionalität in eine Methode aus und rufst die methode in onDestroy und onBackpressed auf.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!