Ho alcuni frammenti che devono mostrare una finestra di dialogo regolare. In queste finestre di dialogo l'utente può scegliere una risposta sì / no, quindi il frammento dovrebbe comportarsi di conseguenza.
Ora, la Fragment
classe non ha un onCreateDialog()
metodo da sovrascrivere, quindi immagino di dover implementare le finestre di dialogo all'esterno, nel file Activity
. Va bene, ma poi è Activity
necessario riportare in qualche modo la risposta scelta al frammento. Ovviamente potrei usare un pattern di callback qui, quindi il frammento si registra nella Activity
con una classe listener, e l'attività riporterebbe la risposta attraverso quella, o qualcosa del genere.
Ma questo sembra essere un bel pasticcio per un compito semplice come visualizzare un "semplice" dialogo sì-no in un frammento. Inoltre, in questo modo il mio Fragment
sarebbe meno autonomo.
C'è un modo più pulito per farlo?
Modificare:
La risposta a questa domanda non spiega in dettaglio come utilizzare DialogFragments per visualizzare le finestre di dialogo da Fragments. Quindi AFAIK, la strada da percorrere è:
- Visualizza un frammento.
- Quando necessario, creare un'istanza di un oggetto DialogFragment.
- Imposta il frammento originale come destinazione di questo DialogFragment, con
.setTargetFragment()
. - Mostra il DialogFragment con .show () dal frammento originale.
- Quando l'utente sceglie un'opzione su questo DialogFragment, notifica al frammento originale questa selezione (ad esempio, l'utente ha fatto clic su "sì"), è possibile ottenere il riferimento del frammento originale con .getTarget ().
- Chiudi il DialogFragment.