Die Aktivität wurde gestartet, wobei startActivityForResult () nicht zum Aufruf der Aktivität zurückkehrt

7

Ich habe 3 Aktivitäten - A , B und C .

Kurz gesagt startet Aktivität A Aktivität B, dann startet A auch Aktivität C und erwartet ein Ergebnis von C, erhält es aber nie.

Hier ist der Anwendungsworkflow:

  1. Aktivität A wird beim Start der Anwendung gestartet und startet Aktivität B (nicht für Ergebnis, nur startActivity ()) in onCreate.

    %Vor%
  2. Aktivität A startet die Aktivität C später im Code, diesmal für das Ergebnis mit startActivityForResult (), und Aktivität A hat auch onActivityResult.

    %Vor%

    und

    %Vor%
  3. Aktivität C verwendet setResult () und finish (), um einige Daten zurückzugeben, die zu Aktivität A zurückkehren sollten, da Aktivität A startActivityForResult ().

    genannt wird %Vor%

ABER Der Arbeitsablauf verstummt in Schritt 3. - onActivityResult von Aktivität A wird niemals aufgerufen (auch nicht von B), obwohl Aktivität A diejenige ist, die C für das Ergebnis startet. Ich bin mir nicht sicher, ob Aktivität B die Kommunikation von A und C behindert oder was das Problem sein könnte. Jede Hilfe wird sehr geschätzt.

    
Gady 13.03.2012, 17:29
quelle

3 Antworten

20

Ich konnte das nie zum Laufen bringen, also benutzte ich stattdessen einen Handler, um die Daten zur notwendigen Aktivität zurückzubringen.

AKTUALISIEREN : Nachdem ich wieder darauf hingewiesen habe, habe ich herausgefunden, dass der wirkliche Grund dafür war, dass ich android:noHistory="true" für die aufrufende / empfangende Aktivität A im Manifest hatte. Das Entfernen von android:noHistory="true" hat das Problem behoben, aber wenn Sie es als wahr einstufen müssen, sind Handler eine gute Lösung.

    
Gady 20.03.2012, 20:49
quelle
1

Ich denke nicht, dass Sie getApplicationContext() in der Absicht verwenden sollten.

Von der Entwickler-Website.

%Vor%

Wenn Sie startActivityForResult() eingeben, wird versucht, zu der Aktivität zurückzukehren, die in der Absicht angegeben ist, die Sie als globalen Anwendungskontext angeben.

Wenn Sie eine AktivitätB haben, sollten Sie sie wie

nennen %Vor%

Dann wird es versuchen, zu ActivityB zurückzukehren, wenn ActivityC fertig ist.

    
triggs 13.03.2012 18:19
quelle
-2

Sie können dies versuchen:

%Vor%

dataTobePassback ist ein Intent , das die Daten enthält, die Sie möglicherweise an die aufrufende Aktivität zurückgeben müssen

    
dumbfingers 10.10.2012 09:56
quelle

Tags und Links