Usuario:ManuelRomero/Android2/PrimerPrograma/Dialogo

De WikiEducator
Saltar a: navegación, buscar

Dialog con 2 o 3 botones

Icon activity.jpg

Actividad

  1. Primero añadimos un botón para que realice esta acción
  2. Le asignamos en el atributo onClick en nombre de la función
  3. implementamos la función





 <Button
        android:id="@+id/btnDialogo1"
        android:text="Dialogo1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="clickDialogo1" />
</xml>
===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
<source lang=java>
 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
  1. Un título setTitle
  2. Un mensaje de texto
  3. Uno, dos o tres botones
  4. Una lista de items seleccionables (con casillas de verificación (checkboxes) o botones de opción (radio buttons) opcionales)
  5. El método setCancelabre(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



Icon activity.jpg

Actividad

Se puede añadir otro botón a la caja de diálogo anterior



checkButton como opciones

  • Tenemos diferentes opciones y queremos seleccionar algunas de ellas
  • En este caso debemos invocar al método

ratio$Button como opciones

  • Tenemos diferentes opciones y queremos seleccionar solo una

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>


  • A continución realizaremos otra ventana de diálogo
  • Seguimos usando el mismo proyecto
  • En ella el usuario debe checkear distintas opciones (seleccionar idiomas)
  • En la misma confirmaremos o cancelaremos la selección