Diferencia entre revisiones de «Usuario:ManuelRomero/Android2/PrimerPrograma/Dialogo»
De WikiEducator
(→Dialog con 2 o 3 botones) |
(→El código) |
||
Línea 22: | Línea 22: | ||
*Para configurar las propiedades de la caja de diálogo usamos un objeto que devuelve el método estático '''''AlertDialog.Builder(Context ); | *Para configurar las propiedades de la caja de diálogo usamos un objeto que devuelve el método estático '''''AlertDialog.Builder(Context ); | ||
*El procedimiento para crear/usar cajas de diálogos es el siguiente | *El procedimiento para crear/usar cajas de diálogos es el siguiente | ||
− | + | #creo un objeto para las propiedades de la caja de diálogo ''AlerDialog.Builder'' | |
− | + | #creo la caja de diálogo AlertDialog a partir de objeto anterior | |
− | + | #Muestro la caja de diálogo | |
<source lang=java> | <source lang=java> | ||
AlertDialog.Builder caja = new AlertDialog.Builder(this);7 | AlertDialog.Builder caja = new AlertDialog.Builder(this);7 |
Revisión de 00:38 23 may 2013
Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos. Ver página de charlas. |
Dialog con 2 o 3 botones
<Button android:id="@+id/btnDialogo1" android:text="Dialogo1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clickDialogo1" />
El código
- Una caja de diálog es un objeto de la clase AlertDialog
- Para configurar las propiedades de la caja de diálogo usamos un objeto que devuelve el método estático AlertDialog.Builder(Context );
- El procedimiento para crear/usar cajas de diálogos es el siguiente
- creo un objeto para las propiedades de la caja de diálogo AlerDialog.Builder
- creo la caja de diálogo AlertDialog a partir de objeto anterior
- Muestro la caja de diálogo
AlertDialog.Builder caja = new AlertDialog.Builder(this);7 caja.setTitle("Titulo"); .setIcon("icono.png"); ...... AlertDialog dialogo = caja.create(); dialogo.show();
- Realizamos el código
- Observar que para dar las diferentes propiedades puedo hacerlo seguido
objeto.propiedad1() .propiedad2() .... .propiedadn();
- Una vez creado el objeto le damos las propiedades que necesarias
- Los métodos que asignas propiedades son muy intuitivos, y permiten asignar
- Un título setTitle
- Un mensaje de texto
- Uno, dos o tres botones
- Una lista de items seleccionables (con casillas de verificación (checkboxes) o botones de opción (radio buttons) opcionales)
- El método setCancelable(boolean) convierte la ventana de dialogo en modal respecto al botón de retroceso
Vermos el código
public void clickDialogo1(View v){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("¿Desea continuar con la transferencia de dinero?") .setTitle("Advertencia") .setCancelable(false) .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }) .setPositiveButton("Continuar", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { msgOK(); // metodo que se debe implementar } }); AlertDialog alert = builder.create(); alert.show(); } private void msgOK(){ Toast t = Toast.makeText(getApplicationContext(), "Has presionado ok", Toast.LENGTH_SHORT); t.show(); }
- Conviene revisar el método para añadir botones
- Tenemos tres métodos para este cometido
setPositiveButton setNegativeButton setNeutralButton
- Estos métodos tienen dos parámetros el texto y el listener
- Se suele pasar una instancia del listener creandola en el propio parámetros
- Si quiere usar variables de la clase, éstas tienen que ser constantes
checkButton como opciones
- Tenemos diferentes opciones y queremos seleccionar algunas de ellas
- En ella el usuario debe checkear distintas opciones (seleccionar idiomas)
- En este caso debemos invocar al método setMultiChoiceItems
- Este método le pasamos el vector de opciones, un vector de boolenos que nos dice cada opción si está o no seleccionada y un listener.
- Igualmente podemos añadir botones de aceptar o cancelar.
<Button android:id="@+id/Dialog4" android:text="Idiomas" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clickOpcionMultiple" />
public void clickOpcionMultiple(View v){ AlertDialog.Builder caja = new AlertDialog.Builder(this); caja.setTitle("Tu OS móvil preferido?") .setMultiChoiceItems(idiomas,idiomasSeleccionados, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // TODO Auto-generated method stub Context contesto = getBaseContext(); int duracion=Toast.LENGTH_SHORT; Toast.makeText(contesto,idiomas[which]+(isChecked ? "seleccionado":"NOOOOOO seleccionado"),duracion).show(); } }); AlertDialog alert = caja.create(); alert.show(); } }
ratioButton
- Tenemos diferentes opciones y queremos seleccionar solo una
- En este caso usaremos el método setSingleChoiceItems(charSequence[] lista,int item_seleccionado,listener)
<Button android:id="@+id/Dialog3" android:text="Sexo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clickSingle" />
public void clickSingle(View v){ AlertDialog.Builder caja = new AlertDialog.Builder(this); caja.setTitle("Tu OS móvil preferido?") .setSingleChoiceItems(sexo, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { Toast toast = Toast.makeText(getApplicationContext(), "Haz elegido la opcion: " + sexo[item] , Toast.LENGTH_SHORT); toast.show(); dialog.cancel(); } }); AlertDialog alert = caja.create(); alert.show(); }
Ventana dialogo con direfentes opciones
- En este caso añadimos el método setItems, en lugar de setMessage
- El método setItems como primer parámetro le pasaremos un vector de charSequences y el segundo es un listener
- Vemos el código
<Button android:id="@+id/btnOpciones" android:text="Opciones" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="clickMsgOpciones" />
<sourece lang=java> public void clickMsgOpciones(View v){
AlertDialog.Builder caja = new AlertDialog.Builder(this); caja.setTitle("Indica sexo") .setPositiveButton("Continuar", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { msgOK(); // metodo que se debe implementar } }) .setItems(sexo, new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int elemento) { // TODO Auto-generated method stub Toast t = Toast.makeText(getApplicationContext(), "Has seleccionado "+sexo[elemento],Toast.LENGTH_LONG); t.show(); dialog.cancel(); } });
AlertDialog alert = caja.create(); alert.show(); } </source>