Ich habe 2 Aktivitäten, jeweils in separaten Anwendungen. Activity1 hat eine Schaltfläche, auf die der Benutzer klicken kann, und ruft die zweite Aktivität mit einer Absicht in der Methode onClick()
auf:
Dies startet Activity2 korrekt aus Activity1, aber onActivityResult
wird in Activity1 aufgerufen, bevor onCreate
in Activity2 aufgerufen wird, anstatt in onBackPressed()
, wo ich den Return Intent einrichtet.
Hier ist die Methode onCreate
für Activity2:
Hier ist die aktuelle Version der Methode onBackPressed
für Activity2:
Meine AndroidManifest.xml hat den folgenden Intent-Filter für Activity2:
%Vor% Ich habe überprüft, dass mein launchMode
standard
ist (und nicht singleTask
, usw.) wie empfohlen hier und mein Anfragecode ist nicht negativ, da hier gewarnt wurde . Ich habe auch android:launchMode="singleTop"
ausprobiert, aber das war auch ein No-Go.
Ich habe auch versucht, finish()
in onBackPressed()
für Activity2 nicht aufzurufen, wie erwähnt hier (auch mit nur super.onBackPressed()
wie vorgeschlagen hier ) und nennen es erneut hier .
Zusätzlich habe ich versucht, die Zeile intent.putExtra("Stuff", someStuff);
zu kommentieren, da sie Probleme für diese Person zu verursachen schien .
Irgendwelche Ideen, was ich falsch machen könnte?
Hier ist also die letzte Lösung, die dafür gesorgt hat:
Ich habe die Absicht für Activity1 folgendermaßen geändert:
%Vor%Aus irgendeinem Grund benötigt Android den vollständig qualifizierten Namen für den zweiten Parameter zusätzlich zu dem Paketnamen, der vom ersten Parameter angegeben wird. Jetzt funktioniert es! :)
Nicht sicher, was Ihr Problem ist. Die Art, wie Sie die Absicht in Aktivität1 erstellen, ist ungerade. Diese Methode ist nicht zum Erstellen von Absichten gedacht, die eine andere Aktivität in derselben App starten. Einige Entwickler verwenden den Konstruktor Intent (Context, Class & lt; & gt;). Ich bevorzuge Intent (String-Aktion) mit einer benutzerdefinierten Aktionszeichenfolge, die nur in meiner App definiert ist (die einfacher zu codieren ist).
Außerdem wird der Intent-Filter, den Sie für Activity2 angegeben haben, normalerweise für eine Aktivität verwendet, die direkt vom Startbildschirm aus gestartet wird.
Wo ist der onCreate () Code für activity2? Wo ist der Code für onBackPressed ()? Kannst du mir beweisen, dass setResult () vor einem anderen Code in Activity2 aufgerufen wird? Sie sollten die Aktivitäten im Debug ausführen. Stellen Sie sicher, dass Activity2 die beabsichtigte Absicht erhält, und verfolgen Sie Schritt für Schritt die Anweisungen, die bis setResult () ausgeführt werden. Das Ding, das nicht zu tun ist, wirft Lösungen auf den Code, bevor Sie verstehen, was das zugrunde liegende Problem ist.
Soweit ich das bisher sagen kann, sendet Activity1 einen Intent, und dann wird onActivityResult aufgerufen. Sonst ist noch nichts bewiesen.
Tags und Links android android-activity android-intent