Dialogo y notificaciones en android
Tema 10. Diálogos y Notificaciones
Primera parte
Diálogos
Al igual que en otros sistemas, un diálogo es una ventana que aparece por delante de la
pantalla visualizada (activity) evitando que, mientras sea mostrado, la actividad acepte
eventos. Los diálogos se utilizan para notificar al usuario tareas o acciones de corta duración, relativas a la actividad, tales como la introducción de datos de login, o como mostrar una barra
de progreso.
Todos los diálogos extenderán de la clase Dialog y, en general, esta clase no será utilizada. Se
deberá utilizar alguna de las subclases ya definidas en Android o bien extender estas o la
propia clase Dialog, para crear un diálogo propio. Los tipos de diálogos disponibles son:
Alertas. Se trata de diálogos que implementan la clase AlertDialog, o una subclase
que la extienda, y que podrán mostrar de cero a tres botones, listas de ítems
seleccionables (vía checkboxes o radiobuttons). Con esta clase se podrán construir la
mayor parte de diálogos de la aplicación. Diálogos de Progreso. Son diálogos que muestran una barra (o un círculo) de progreso.
También aceptan botones. Se implementan con la clase ProgressDialog, que es, a su
vez, una subclase de AlertDialog.
Selectores de fechas. Permiten seleccionar una fecha (día, mes, año)
Selectores de hora. Permiten seleccionar una hora (hora, minutos, am/pm)
Diálogos personalizables.
Cómo mostrar y ocultar un diálogo
Los diálogos siempre pertenecen a una actividad concreta. Deben ser creados en el método
onCreateDialog(int), para que la actividad propietaria pueda gestionarlos correctamente.
Este método devolverá el objeto de tipo Dialog creado. Los diálogos se muestran con el
método showDialog(int), recibiendo como parámetro el identificador del diálogo a mostrar. La primera vez que se vaya a mostrar un diálogo, invocando a showDialog(int), el sistema
invocará al método onCreateDialog(int), ya que el objeto todavía no ha sido instanciado. Las
sucesivas llamadas a showDialog(int), no invocarán el método create puesto que el objeto
ya existe en memoria (de ahí que la aplicación tarde un poco más en mostrarlo la primera vez).
En cambio, y al igual que ocurre con los menús, justo antes de mostrarse el diálogo, se
invocará al método onPrepareDialog(int, Dialog), en caso de que sea implementado. Este
método permitirá modificar el estado o las propiedades del diálogo.
Para ocultar un diálogo, una vez está en pantalla, se invocará, o bien dismiss(), dentro del
propio diálogo (tal y como se verá más adelante) o bien dismissDialog(int), si se quiere
cerrar desde la propia actividad (por ejemplo, cuando esta haya acabado una tarea que
requería mostrar una barra de progreso). Al invocar a este método, el diálogo que se cierra se
conservará en memoria, manteniendo su estado. En caso de no querer mantener su estado, o
no necesitar más el diálogo, se podrá invocar a removeDialog(int). Este método eliminará
el diálogo de memoria de forma que, si se vuelve a solicitar, el sistema volverá a invocar al
método create.
En el caso de que, cuando se cierre el diálogo (o se elimine), se necesite realizar alguna
operación, se podrán asociar listeners de tipo on‐dismiss. Para ello, se pasará el interfaz
DialogInterface.OnDismissListener al método setOnDismissListener(). De dicho interfaz, se deberá implementar el método onDismiss(DialogInterface), que será invocado
cuando se cierre el diálogo:
dialogo.setOnDismissListener(new DialogInterface.OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
// Aquí se realizará la operación deseada en el momento
// de cerrar el diálogo
}
}); ...
Regístrate para leer el documento completo.