Por lo que puedo decir, hay dos formas de mostrar un cuadro de diálogo de una actividad.Dialog.show() vs. Activity.showDialog()
- creado el diálogo (por ejemplo, usando un
AlertDialog.Builder
), y luego llamar al método del diálogo recién creadoshow()
. - Llame al método
showDialog()
de Activity, pasando un int que define de forma única qué tipo de cuadro de diálogo desea construir. Luego, anuleonCreateDialog()
para que realmente cree el cuadro de diálogo, y Android lo mostrará por usted.
El segundo método parece ser la práctica estándar, pero tengo curiosidad si hay alguna razón por la que importe cuál utilizo. Aquí es todo lo que puedo llegar a:
razones para utilizar Dialog.show
- Si tiene que parametrizar el diálogo de alguna manera, puede ser un poco incómodo de usar
Activity.showDialog
, como se describe en this question. Puede que tenga que almacenar un String o algo en una variable miembro, solo para que pueda recuperarse momentos más tarde duranteonCreateDialog
oonPrepareDialog
. - La lógica para crear y modificar el cuadro de diálogo se extiende a través de una serie de lugares, lo que podría hacer que el código sea más difícil de leer y mantener:
- El lugar donde se llama a
showDialog()
- Dentro de una potencialmente grande
switch
declaración en el sobrescritoonCreateDialog
método - Dentro de una potencialmente grande
switch
declaración en el método reemplazadoonPrepareDialog
- El lugar donde se llama a
razones para utilizar Activity.showDialog
:
- La API Docs para
Activity.showDialog
dicen que el diálogo es "administrada" por la actividad que supongo que proporciona algún beneficio? Pero esto también es cierto si usa elAlertDialog.Builder
, creo, porque pasathis
como argumento al constructor del constructor. - Si su actividad va a mostrar el mismo diálogo (o uno muy similar) varias veces, esta opción lo crea solo una vez, en lugar de crear uno nuevo cada vez, lo que ejerce menos presión sobre el sistema en cuanto a asignación de espacio para los nuevos objetos, recolección de basura, etc.
Así que mi pregunta es, ¿cuáles son los criterios para decidir cuándo utilizar Activity.showDialog
y cuándo usar Dialog.show
, y por qué?
Hay una explicación técnica detallada de por qué elegimos Activity.showDialog en lugar de Dialog.show. http://www.dreamincode.net/forums/topic/233010-dialogs-and-the-android-lifecycle/ Yup. En su mayoría, trato relacionado con la orientación de la pantalla. –
Solo un punto a tener en cuenta aquí: 'onCreateDialog()' solo se llama una vez cuando primero se necesita crear el cuadro de diálogo y aquí es donde inicialmente se configura el contenido del diálogo. Si necesita actualizar su contenido, debe usar el método 'onPrepareDialog()', que se llama justo antes de que se muestre el cuadro de diálogo, lo que le permite actualizar sus contenidos adecuadamente. – Caumons