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

De WikiEducator
Saltar a: navegación, buscar
(El código)
(Página reemplazada por '{{:Usuario:ManuelRomero/Android/PrimerContacto/nav}}')
 
(3 revisiones intermedias por el mismo usuario no mostrado)
Línea 1: Línea 1:
{{TEP}}
+
{{:Usuario:ManuelRomero/Android/PrimerContacto/nav}}
{{:Usuario:ManuelRomero/Android2/PrimerPrograma/nav}}
+
<br>
+
===Dialog con 2 o 3 botones===
+
<br/>
+
{{Actividad|
+
#Primero añadimos un botón para que realice esta acción
+
#Le asignamos en el atributo onClick en nombre de la función
+
#implementamos la función
+
}}
+
 
+
<source lang=xml>
+
<Button
+
        android:id="@+id/btnDialogo1"
+
        android:text="Dialogo1"
+
        android:layout_width="wrap_content"
+
        android:layout_height="wrap_content"
+
        android:onClick="clickDialogo1" />
+
</source>
+
===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();
+
</source>
+
*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
+
<source lang=java>
+
  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();
+
}
+
</source>
+
*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
+
 
+
{{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.
+
<source lang=xml>
+
  <Button
+
        android:id="@+id/Dialog4"
+
        android:text="Idiomas"
+
        android:layout_width="wrap_content"
+
        android:layout_height="wrap_content"
+
        android:onClick="clickOpcionMultiple" />
+
</source>
+
<source lang=java>
+
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();
+
}
+
}
+
 
+
 
+
</source>
+
===ratioButton ===
+
*Tenemos diferentes opciones y queremos seleccionar  solo una
+
*En este caso usaremos el método setSingleChoiceItems(charSequence[] lista,int item_seleccionado,listener)
+
<source lang=xml>
+
<Button
+
        android:id="@+id/Dialog3"
+
        android:text="Sexo"
+
        android:layout_width="wrap_content"
+
        android:layout_height="wrap_content"
+
        android:onClick="clickSingle" />
+
</source>
+
 
+
<source lang=java>
+
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();
+
}
+
 
+
</source>
+
===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
+
<source lang=xml>
+
  <Button
+
        android:id="@+id/btnOpciones"
+
        android:text="Opciones"
+
        android:layout_width="wrap_content"
+
        android:layout_height="wrap_content"
+
        android:onClick="clickMsgOpciones" />
+
</source>
+
<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>
+
*
+

Última revisión de 03:38 21 oct 2013