Android onActivityResult wurde früh aufgerufen

8

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:

%Vor%

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:

%Vor%

Hier ist die aktuelle Version der Methode onBackPressed für Activity2:

%Vor%

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?

    
user1205577 06.04.2012, 20:21
quelle

3 Antworten

9

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! :)

    
user1205577 09.04.2012, 15:44
quelle
1

Dies passiert, wenn das Flag "singleInstance" beim Start der Aktivität gesetzt wird.

    
jbaylina 17.10.2013 12:30
quelle
0

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.

    
Joe Malin 06.04.2012 20:59
quelle