2014-10-09 17 views
5

i verwenden startActivityForResult für zwei Aktivitäten wie diesestartActivityForResult Nutzung für mehrere Aktivitäten

Activity A -> startActivityForResult(ActivityB,0) -> Activity B -> setresult(10); finish(); -> Activity A -> if(result==10) {dofunction(); } 

aber ich muß diese Logik für 4 oder mehr Aktivitäten nutzen.

Activity A -> startActivityForResult(ActivityB,0) -> Activity B -> finish(); -> Activity C -> finish(); -> Activity D -> setresult(10); finish(); -> Activity A -> if(result==10) {dofunction(); } 

aber dies funktioniert nicht.

Antwort

20

LÖSUNG:

Activity A -> startActivityForResult(activityB,0); 
Activity B -> activityCintent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(activityCintent); finish(); 
Activity C -> activityDintent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(activityDintent); finish(); 
Activity D -> setresult(10); finish(); 
Activity A -> if(result==10) {dofunction(); } YEPPP 

dies ist die Logik der FLAG_ACTIVITY_FORWARD_RESULT. Zuerst starten Sie eine Aktivität für das Ergebnis, eine neue Aktivität sendet diese Absicht an eine andere neue Aktivität, bis Sie das Ergebnis festgelegt haben. Ich hoffe, dass dies für Leute mit dem gleichen Problem hilfreich sein wird.

+0

Dies hält B, C, D auf Aktivitäten zurück Stapel bis das Ergebnis festgelegt? Oder beendet es die aktuelle Aktivität sofort, wenn der nächste gestartet wird? – atablash

1

Nach der Benennung Aktivität in startActivityForResult(ActivityB,0) geben wir Anfrage Code für die angegebene Aktivität dh; startActivityForResult(ActivityB,REQUEST_CODE_FOR_ACTIVITYB). wobei der Anforderungscode irgendeine ganze Zahl ist. Dann in onActivityResult Prüfung für jedes Anforderungscode und implementieren Ihre Logik

+1

, wenn Sie eine Referenzprüfung wollen http://www.vogella.com/tutorials/AndroidIntent/article.html – NIPHIN

+0

ich versuchte 'Aktivität A -> startActivityForResult (ACTIVITYB, 0) -> Aktion B -> startActivityForResult (AktivitätC, 0) Ende(); -> Aktivität C -> startActivityForResult (ActivityD, 0) finish(); -> Aktivität D -> Mengeergebnis (10); Fertig(); -> Aktivität A -> if (Ergebnis == 10) {Dofunction(); } ' aber hat nicht funktioniert – sipdorus

+0

meine Antwort noch einmal lesen – NIPHIN

Verwandte Themen