2016-04-05 7 views
0

Meine App besteht aus einem Dienst (der eine Statusmaschine implementiert und auf UI- und Netzwerkereignisse reagiert) und mehreren Statusaktivitäten, die den Status der Statusmaschine entsprechen.Verwenden von startActivityForResult aus der Aktivität, die mit FLAG_ACTIVITY_NO_HISTORY gestartet wurde

Die Statusänderung verwendet FLAG_ACTIVITY_NO_HISTORY, um Statusaktivitäten zu starten, sodass der Benutzer die Statusmaschine nicht umgehen und "zurück" zur "falschen" Aktivität gelangen kann. Dies macht den "Zurück" -Button zum Beenden der App. (Der Status bleibt bestehen, wenn die App neu gestartet wird.)

Ich möchte startActivityForResult verwenden, um eine nicht-staatliche Aktivität zu starten.

Wenn die nicht-staatliche Aktivität gestartet wird, wird die Aktivität des übergeordneten Status wie erwartet gestoppt.

Wenn die nicht-staatliche Aktivität finish() aufruft, wird die Aktivität des übergeordneten Status zerstört und nicht (erneut) gestartet, noch bevor die übergeordnete Instanz aufgerufen wird.

Liegt das daran, dass die übergeordnete Aktivität mit FLAG_ACTIVITY_NO_HISTORY gestartet wurde?

Antwort

2

Ja, ich habe festgestellt, dass dies die Ursache des Problems war.

+2

können Sie auf zurück gedrückt Funktion verwenden, um Benutzer zu beschränken, die Zustandsmaschine nicht zu umgehen und "zurück" zu der "falschen" Aktivität zu erhalten –

0

Ich habe das gleiche Problem, und Adeel Turk hat es gelöst! Danke euch beiden!

Beim Ausschalten/Home gedrückt/Aufruf StartActivityForResult, App wird "getötet" (fertig).

gerade dies die zweiten Aktivität hinzufügen. (MainActivity)

btw, mein erstes ist startActivity (mit Mustersperre). Sekunde ist MainActivity()

@Override 
public void onBackPressed(){ 
    FragmentManager manager = getSupportFragmentManager(); 

    if (manager.getBackStackEntryCount() > 1){ 
     super.onBackPressed(); 
    } 
    else{ 
     finish(); 
    } 
} 
Verwandte Themen