Wie erhebe ich ein DialogFragment über ein anderes?

8

Angenommen, ich habe mehrere Dialogfragmente, die als Antwort auf Nachrichten und Ereignisse angezeigt werden, die in beliebiger Reihenfolge eintreffen können. Normalerweise wird der zuletzt angezeigte Dialog oben angezeigt. Gibt es eine Möglichkeit, ein Dialogfragment unter einem vorhandenen zu zeigen oder ihre Z-Reihenfolge zu ändern, nachdem sie angezeigt wurden?

Es sollte ziemlich selten sein, dass meine App mehr als einen Dialog gleichzeitig anzeigt, aber es könnte passieren. Es gibt einen bestimmten Dialog, der immer sichtbar sein sollte, wenn er sichtbar ist.

    
Kevin Krumwiede 01.07.2015, 09:41
quelle

1 Antwort

4

Ein Dialog erstellt ein Anwendungsunterfenster. Fenstermanager von Android ( WindowManagerService ) berechnet automatisch die z-Reihenfolge des Fensters abhängig von seinem Typ und speichert sie in WindowState ist das mLayer -Feld. Interne Android-Klassen haben Zugriff auf dieses Feld und ändern manchmal die z-Reihenfolge des Fensters, aber diese API wird nicht dem Android SDK ausgesetzt. Es scheint also, dass die einzige Möglichkeit, die Z-Reihenfolge des Dialogs zu beeinflussen, darin besteht, sie neu zu erstellen.

Alles, was ich oben geschrieben habe, ist nur das Ergebnis einer kurzen Untersuchung des Quellcodes von Android, damit ich falsch liegen kann. Und vielleicht gibt es eine hacky Art zu tun, was Sie wollen mit Reflexion und Zugriff auf private Felder und Methoden. Aber ich bin mir nicht sicher, ob es eine gute Idee ist, es zu versuchen. Meiner Meinung nach wäre es besser, nur einen einzigen Dialog oder gar eine Aktivität zu haben und Fragmente darin zu verwalten.

    
Michael 07.07.2015, 10:48
quelle