Acceder

Ver la Versión Completa : ventana emergente


capdepiu
04/12/09, 14:21:39
Hola a todos!

Estaba haciendo pruebas de programación, y estoy buscando la forma de que al pulsar un botón me aparezca una ventanita dando un mensaje, como si fuese la siguiente imagen :monoloco: (con o sin boton, claro)

_________________________
|..........................................|
| Se han guardado los datos...|
|..........Correctamente...........|
|...........____________..........|
|..........|.....Aceptar.....|........|
|________________________|

O como por ejemplo cuando abres un contacto y mantienes pulsado sobre "Llamar a movil"....

A ver si puede alguien echarme una manita ;)

Gracias por adelantado.:aplausos:

saludos,

migue85
06/12/09, 03:07:56
lo que buscas es el manejo de la clase dialog:

AlertDialog.Builder ad = new AlertDialog.Builder(c);
ad.setTitle("Opercion completada");
ad.setMessage("Se han guardado los datos correctamente");
adv.setPositiveButton("Aceptar", null);
adv.setIcon(R.drawable.un icono si te apetece);
adv.show();

por ejemplo :D

hay cosas mas elaboradas. En concreto podemos hacer mas cosillas con el dialog como impedir que se cancele al pulsar el boton "back" o quitarlo de la vista en tiempo de ejecucion si sucede un evento en concreto (para ello hay que hacer alguna que otra triquiñuela) pero de momento, eso que buscas es sencillo, te dejo ese codigo a ver si te funciona. Te recomiendo (si no lo haces) que uses un xml para guardar ahi los strings que uses de forma que sea mucho mas facil hacer luego una aplicacion multilenguaje.
Un saludo :)

capdepiu
07/12/09, 22:52:07
muchas gracias!!:platano:

lo probaré en cuanto tenga oportunidad y ya te contaré los resultados

graciaas!!:aplausos::aplausos:

migue85
10/12/09, 12:34:06
Otra opcion de que salga una notificacion emergente es el uso de toast.
En este caso no habra ningun boton y la notificacion desaparecera al cabo de breves instantes:

Toast t = Toast.makeText(this, "Se han guardado los datos correctamente", Toast.LENGTH_SHORT);
t.show();

El parametro "this" es el contexto de la actividad.

Comentame que tal te ha ido, un saludo :)

vierco
12/12/09, 08:58:58
me encanta esta seccion, sois unas maquinas :ok:

capdepiu
16/12/09, 16:40:09
Otra opcion de que salga una notificacion emergente es el uso de toast.
En este caso no habra ningun boton y la notificacion desaparecera al cabo de breves instantes:

Toast t = Toast.makeText(this, "Se han guardado los datos correctamente", Toast.LENGTH_SHORT);
t.show();

El parametro "this" es el contexto de la actividad.

Comentame que tal te ha ido, un saludo :)


He probado la solución que has aportado y como dice la imagen.... ha ido perfecto!!
27373


La otra solución aportada la he probado, pero no se de donde sacar la variable "c", dado que no se de donde viene. De todas formas, gracias por la solución.

lo que buscas es el manejo de la clase dialog:

AlertDialog.Builder ad = new AlertDialog.Builder(c);
ad.setTitle("Opercion completada");
ad.setMessage("Se han guardado los datos correctamente");
adv.setPositiveButton("Aceptar", null);
adv.setIcon(R.drawable.un icono si te apetece);
adv.show();

por ejemplo :D

hay cosas mas elaboradas. En concreto podemos hacer mas cosillas con el dialog como impedir que se cancele al pulsar el boton "back" o quitarlo de la vista en tiempo de ejecucion si sucede un evento en concreto (para ello hay que hacer alguna que otra triquiñuela) pero de momento, eso que buscas es sencillo, te dejo ese codigo a ver si te funciona. Te recomiendo (si no lo haces) que uses un xml para guardar ahi los strings que uses de forma que sea mucho mas facil hacer luego una aplicacion multilenguaje.
Un saludo :)



De nuevo, muchas gracias:aplausos: por tu ayuda

migue85
17/12/09, 01:22:51
Hola de nuevo.
Me alegro un monton de que te haya servido de ayuda.
Siento el fallo del copy pasteo del codigo, c en el caso del ejemplo es el contexto de la aplicacion.

Yo personalmente, llamo c al contexto de la actividad y en el metodo onCreate de la misma incluyo cuando es necesario la instruccion:

c = this;

habiendo declarado en la clase como atributo privado:

private Context c;

Esto es debido a que si ponemos en el metodo de la ventanita la linea con this en lugar de c, no siempre nos aseguramos de que funcione ya que si estamos dentro de, por ejemplo, un onClick listener de un boton, this en ese caso hace referencia a dicho listener y no al contexto de la actividad.

Para probar de nuevo el codigo basta con que cambies c por this y si no funciona, prueba a poner c como atributo e inicializarlo en el onCreate.

Un saludo!

capdepiu
18/12/09, 09:45:40
Hola de nuevo.
Me alegro un monton de que te haya servido de ayuda.
Siento el fallo del copy pasteo del codigo, c en el caso del ejemplo es el contexto de la aplicacion.

Yo personalmente, llamo c al contexto de la actividad y en el metodo onCreate de la misma incluyo cuando es necesario la instruccion:

c = this;

habiendo declarado en la clase como atributo privado:

private Context c;

Esto es debido a que si ponemos en el metodo de la ventanita la linea con this en lugar de c, no siempre nos aseguramos de que funcione ya que si estamos dentro de, por ejemplo, un onClick listener de un boton, this en ese caso hace referencia a dicho listener y no al contexto de la actividad.

Para probar de nuevo el codigo basta con que cambies c por this y si no funciona, prueba a poner c como atributo e inicializarlo en el onCreate.

Un saludo!

He cambiado lo del Context, y lo he puesto tal como has dicho, pero ahora me surge un problema....

cuando aparece la ventanita con el mensaje y el boton, no espera a que yo le de, simplemente se cierra (luego de ad.show() )... es decir, deberia ponerle algo para hacer wait?

gracias por tu gran ayuda :aplausos:

migue85
18/12/09, 15:09:27
Hola!
mmmm prueba entonces a cambiar la linea del ejemplo anterior:

adv.setPositiveButton("Aceptar", null);

por esta otra

ad.setPositiveButton("Aceptar",
new OnClickListener()
{
public void onClick(DialogInterface d, int n) { }
});A ver si a la tercera va la vencida :D
saludos!

capdepiu
22/12/09, 10:19:35
Hola!
mmmm prueba entonces a cambiar la linea del ejemplo anterior:

adv.setPositiveButton("Aceptar", null);

por esta otra

ad.setPositiveButton("Aceptar",
new OnClickListener()
{
public void onClick(DialogInterface d, int n) { }
});A ver si a la tercera va la vencida :D
saludos!

Pueessss a la tercera.... me parece que todavia no.... jejeje
He corregido el código, pero aun así no espera a que yo pulse sobre el botón, la ventana desaparece antes. Es decir, aparece la ventana, pero inmediatamente desaparece de nuevo...

Gracias por tu esfuerzo y ayuda.

migue85
22/12/09, 14:24:32
que raro...
si puedes pon el codigo de la actividad a ver que puede ser lo que falla