2009-12-18 14 views
7

En mi actividad, me gustaría mostrar cuadros de diálogo de información simples y cosas por el estilo:diálogos de mensajes simples

new AlertDialog.Builder(context).setMessage(message).show(); 

Si hago eso, el diálogo fugas cuando puedo rotar el teléfono (por no hablar de que desaparecerá también, por lo que el usuario puede perderlo). Puedo usar los cuadros de diálogo administrados, pero no estoy seguro de cómo lo usa de manera sensata para este tipo de mensajes cortos. Parece que usted tiene que hacer esto:

showDialog(SOME_DLG_ID); 
... 
@Override 
onCreateDialog(int id) { 
    if (id == SOME_DLG_ID) { 
     new AlertDialog.Builder(context).setMessage(message).show(); 
    } 
} 

no hay manera de pasar lo que el mensaje debe ser en onCreateDialog como es un método de reemplazo. Odiaría hacer que un miembro sea variable de la actividad principal que almacena lo que debería ser el mensaje actual. ¿Cómo lo hacen todos?

Gracias

+0

Creo que está atascado con la opción variable de miembro ... lo siento. – rui

+0

sí se ve de esa manera, qué vergüenza! Gracias – Mark

+0

¡Sí! Es una pena para el desarrollador. Necesitamos codificar en un patrón tan extraño solo para mostrar el diálogo. –

Respuesta

3

Puede implementar Activity.onPrepareDialog(int, Dialog) para cambiar el mensaje antes de que se muestre el diálogo en la pantalla. Por lo que podría hacer algo como:

@Override protected void onPrepareDialog(int id, Dialog dialog) { 
    if (id == SOME_DLG_ID) { 
     ((AlertDialog) dialog).setMessage(message); 
    } 
} 

Usted aún tiene que llevar la cuenta del mensaje que estamos mostrando actual de su actividad, pero al menos esta manera, usted no está creando un objeto de diálogo para cada mensaje que quieres mostrar

+1

Bueno, el problema aquí es el mismo, no puede pasar el mensaje de cadena que tiene en el punto que llama a showDialog() a onPrepareDialog o onCreateDialog() ... – rui

+0

Ah, mi mal ... supongo que entendí mal la pregunta . –

+0

Sí, y este es el principal problema en realidad, necesita este patrón extraño para obtener la cadena de mensaje dinámico para el diálogo - ¡se siente muy incómodo! Gracias – Mark

4

si hago eso, el diálogo se escapará cuando puedo rotar el teléfono (no mencionar que va a desaparecer y, por lo el usuario puede perder)

Puede añadir

<activity 
    android:configChanges="orientation|keyboardHidden" 
> 

a su AndroidManifest.xml para evitar el reinicio de la actividad cuando el teléfono gira. Lo estoy usando en mi aplicación y mi AlertDialog sobrevive a la rotación del teléfono.

+0

sí, android: configChanges = "orientación" es el camino a seguir. impide la ejecución de "onCreate" y permite que la aplicación permanezca en el mismo estado cuando se gira el teléfono – datayeah

0

El uso de DialogFragment para gestionar el diálogo garantiza que maneje correctamente los eventos del ciclo de vida, como cuando el usuario gira la pantalla o presiona el botón Atrás.

Cuestiones relacionadas