6

Wenn ich ein DialogFragment von einer Aktivität aus starte, was passiert, wenn ich das DialogFragment schließe? Wird die Aktivität im Status "Resume" ausgeführt? Oder ist der Aufruf wie jeder normale Java-Aufruf, so dass die nächste Zeile niemals ausgeführt wird, bis das DialogFragment geschlossen ist?Wie wirkt sich DialogFragment auf den Lebenszyklus der aufrufenden Aktivität aus

Angenommen, das Verfahren mein Fragment für den Start

private void launchFragment(){ 
    ConfirmationDialog confirm = new ConfirmationDialog(); 
    confirm.show(getSupportFragmentManager(), "confirm"); 
    doMoreStuff(); 
} 

Meine Frage ist also eine zweifache:

genannt
  1. Wenn doMoreStuff()? Vorher oder nachher schließe ich das Fragment, um zur übergeordneten Aktivität zurückzukehren?
  2. Nachdem ich das Fragment geschlossen habe, um zur übergeordneten Aktivität zurückzukehren, durchläuft die übergeordnete Aktivität onResume: Wenn ich also nach einem durch das Fragment geänderten Feld suche, kann ich in onResume arbeiten, basierend auf dem Status davon Feld:

Wie in dem folgenden Beispiel:

@Override 
public void onResume() { 
    super.onResume(); 
    if(dialogFragmentChangedThis){ 
     workSomeMore(); 
    } 
} 

Das Fragment wird mit

setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen); 

so eingeführt, dass es in Vollbildmodus.

Antwort

5

Wann wird doMoreStuff() aufgerufen? Vorher oder nachher schließe ich das Fragment, um zur übergeordneten Aktivität zurückzukehren?

DialogFragment ‚s show() Methode verpflichtet nur FragmentTransaction, die asynchron ausgeführt werden, so dass jede Methode, die sofort ausgeführt wird folgt.

Nachdem ich das Fragment nahe an die übergeordneten Aktivität zurückzukehren, hat die übergeordnete Aktivität durch onResume

Nein, tut es nicht, da Ihre Activity im Vordergrund ist die ganze Zeit, wie es sind keine anderen Activities beteiligt.

Normalerweise werden Sie die Rückrufe Zuhörer mit DialogFragment s verwenden, wie Sie mit einfachen Fragment s tun, indem Sie die Rückrufe der Umsetzung in Ihrem Activity und von Ihrem Activity ‚s Methode durch diese Schnittstelle aufrufen, wenn Sie ein Ergebnis eines übergeben wollen Aktion, die in der DialogFragment passiert ist.

+0

Ich dachte über die Implementierung einer benutzerdefinierten Callback-Schnittstelle nach, aber ich hatte gehofft, dass es einen einfacheren Weg als das gab; solche Piggy Backing auf den Lebenszyklus. –