Ich habe einige Fragmente, die einen regelmäßigen Dialog anzeigen müssen. In diesen Dialogen kann der Benutzer eine Ja / Nein-Antwort auswählen, und dann sollte sich das Fragment entsprechend verhalten.
Jetzt hat die Fragment
Klasse keine onCreateDialog()
Methode zum Überschreiben, also muss ich die Dialoge wohl draußen im enthaltenen implementieren Activity
. Es ist in Ordnung, aber dann Activity
muss die gewählte Antwort irgendwie an das Fragment zurückgemeldet werden. Ich könnte hier natürlich ein Rückrufmuster verwenden, so dass sich das Fragment Activity
bei einer Listener-Klasse registriert und die Aktivität die Antwort darüber oder so etwas zurückmeldet.
Dies scheint jedoch ein ziemliches Durcheinander für eine einfache Aufgabe zu sein, da ein "einfacher" Ja-Nein-Dialog in einem Fragment angezeigt wird. Auch auf diese Weise Fragment
wäre ich weniger in sich geschlossen.
Gibt es einen saubereren Weg, dies zu tun?
Bearbeiten:
Die Antwort auf diese Frage erklärt nicht wirklich im Detail, wie man DialogFragments verwenden sollte, um Dialoge aus Fragmenten anzuzeigen. Also AFAIK, der Weg ist:
- Ein Fragment anzeigen.
- Instanziieren Sie bei Bedarf ein DialogFragment.
- Legen Sie das ursprüngliche Fragment als Ziel dieses DialogFragments fest
.setTargetFragment()
. - Zeigen Sie das DialogFragment mit .show () aus dem Originalfragment an.
- Wenn der Benutzer eine Option in diesem Dialogfeld auswählt, benachrichtigen Sie das ursprüngliche Fragment über diese Auswahl (z. B. hat der Benutzer auf "Ja" geklickt). Mit .getTarget () können Sie die Referenz des ursprünglichen Fragments abrufen.
- Schließen Sie das DialogFragment.