Diferencia entre revisiones de «Usuario:ManuelRomero/Android2/PrimerPrograma/Dialogo»

De WikiEducator
Saltar a: navegación, buscar
(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 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
+
#creo la caja de diálogo  AlertDialog a partir de objeto anterior
  #Muestro la caja de diálogo
+
#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

Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg




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" />

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
  1. creo un objeto para las propiedades de la caja de diálogo AlerDialog.Builder
  2. creo la caja de diálogo AlertDialog a partir de objeto anterior
  3. 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
  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 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



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 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>