Dialog.show () vs. Activity.showDialog ()

Por lo que puedo decir, hay dos maneras de mostrar un diálogo de una actividad.

  1. Cree el AlertDialog.Builder diálogo (por ejemplo, utilizando un AlertDialog.Builder ) y, a continuación, llame al método show() AlertDialog.Builder diálogo recién creado.
  2. Llame al método showDialog() , pasando un int que define de forma única qué tipo de diálogo desea crear. A continuación, anule onCreateDialog() para crear el onCreateDialog() diálogo, y Android lo mostrará para usted.

El segundo método parece ser la práctica estándar, pero estoy curioso si hay alguna razón que importa que uno uso. Aquí está todo lo que puedo imaginar:

Razones para usar Dialog.show

  1. Si necesita parametrizar el Diálogo de alguna manera, puede ser un poco incómodo usar Activity.showDialog , como se describe en esta pregunta . Puede que tenga que almacenar una cadena o algo en una variable miembro, sólo para que pueda recuperarse momentos más tarde durante onCreateDialog o onPrepareDialog .
  2. La lógica para crear y modificar el diálogo se extiende a través de una serie de lugares, potencialmente haciendo que el código sea más difícil de leer y mantener:
    • El lugar donde se llama showDialog()
    • Dentro de una sentencia switch potencialmente grande en el método onCreateDialog sobreescrito
    • Dentro de una sentencia de switch potencialmente grande en el método onPrepareDialog sobreescrito

Razones para utilizar Activity.showDialog :

  1. Los documentos de API para Activity.showDialog dicen que el Diálogo es "administrado" por la Actividad que supongo proporciona algún beneficio? Pero esto también es cierto si usas el AlertDialog.Builder , creo, porque pasas en this como un argumento al constructor del constructor.
  2. Si su actividad va a mostrar el mismo (o un cuadro de diálogo muy similar) varias veces, esta opción lo crea una sola vez, en lugar de crear una nueva cada vez, poniendo así menos tensión en el sistema en cuanto a asignar espacio para objetos nuevos , Recolección de basura, etc.

Así que mi pregunta es, ¿cuáles son los criterios para decidir cuándo usar Activity.showDialog y cuándo usar Dialog.show , y por qué?

En mi opinión usted debe preferir showDialog porque este método hará la mayor parte del trabajo para usted. En ejemplo, no tiene que preocuparse de que perderá la referencia a su diálogo después de cambiar la orientación de la pantalla. Se recreará automáticamente. Dialog.show es mucho más propenso a errores.

Así que te sugiero que utilices showDialog donde puedas.

Creo que la decisión depende de usted, dependiendo de las buenas razones que ha señalado. Si tengo una actividad que tiene sólo un cuadro de diálogo (por ejemplo, para mostrar una alerta) acabo de despedir el método Dialog.show … por otro lado, si la interfaz de usuario de mi aplicación depende demasiado de su funcionalidad en el Uso de diálogos sería mucho mejor usar showDialog() . Creo que la mejor ventaja de usar showDialog() es que es más fácil de leer:

 final int ERROR_DIALOG = 404; final int MSG_DIALOG = 200; ..... // if someone else read this, he/she will immediately understand what's going on showDialog( ERROR_DIALOG ); 

Puede utilizar el método sobrecargado showDialog(int, Bundle) introducido en el nivel 8 de la API.
Simplemente empuje el mensaje que se mostrará en el paquete, que estará disponible en onPrepareDialog(int, Dialog, Bundle) .

Sí, sé que showDialog() se ha desaprobado ahora.

  • Android hace que el cuadro de diálogo esté completo con la barra de estado mostrando
  • Cambiar el color del diálogo Datepicker para Android 5.0
  • Fuerza de diálogo personalizada de Android cierre
  • ¿Cómo agregar el título al cuadro de diálogo personalizado?
  • Línea negra en el diálogo personalizado en Galaxy S 2
  • Cómo configurar los márgenes en un cuadro de diálogo personalizado?
  • Diálogo sin bordes de Android
  • ¿Cómo actualizar los valores de setMultiChoiceItems en onPrepareDialog?
  • Cómo deshabilitar el botón de retroceso cuando el cuadro de alerta está en la pantalla
  • ¿El diálogo detiene la actividad de llamada?
  • Cuadro de diálogo o formulario donde el usuario puede elegir para introducir detalles o cancelar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.