Tengo algunos fragmentos que necesitan mostrar un diálogo regular. En estos cuadros de diálogo, el usuario puede elegir una respuesta sí / no, y luego el fragmento debe comportarse en consecuencia.
Ahora, la Fragment
clase no tiene un onCreateDialog()
método para anular, así que supongo que tengo que implementar los diálogos afuera, en el contenedor Activity
. Está bien, pero luego es Activity
necesario informar la respuesta elegida de alguna manera al fragmento. Por supuesto, podría usar un patrón de devolución de llamada aquí, por lo que el fragmento se registra en la Activity
clase con un oyente, y la Actividad informaría la respuesta a través de eso, o algo así.
Pero esto parece ser un gran lío para una tarea simple como mostrar un diálogo "simple" sí-no en un fragmento. Además, de esta manera mi Fragment
sería menos autónomo.
¿Hay alguna forma más limpia de hacer esto?
Editar:
La respuesta a esta pregunta no explica realmente en detalle cómo se debe usar DialogFragments para mostrar los diálogos de Fragments. Entonces AFAIK, el camino a seguir es:
- Muestre un fragmento.
- Cuando sea necesario, cree una instancia de DialogFragment.
- Establezca el Fragmento original como el destino de este DialogFragment, con
.setTargetFragment()
. - Muestre el DialogFragment con .show () del Fragmento original.
- Cuando el usuario elige alguna opción en este DialogFragment, notifique al Fragmento original sobre esta selección (por ejemplo, el usuario hizo clic en 'sí'), puede obtener la referencia del Fragmento original con .getTarget ().
- Descarte DialogFragment.