Você está na página 1de 20

Dilogos

Dilogos
Si una actividad requiere informacin adicional del usuario,
se puede obtener abriendo una nueva actividad que recoja los
datos y se los transfiera a la actividad original.
Sin embargo, puede ser tedioso de programar y complicar
excesivamente
nuestra aplicacin.
Los dilogos simplifican estas tareas.

Dilogos
Crear un dialogo
Un dialogo es una ventana que se abre sobre nuestra actividad
mostrando un
mensaje
y nos permite interactuar con el usuario mediante botones.

Dilogos
Para mostrar un dialogo invocamos el mtodo showDialogO de la
clase Activity.
Esto hace que se ejecute el mtodo onCreateDialog de la clase
Activity que deberemos sobrescribir para construir nuestro dialogo,
que ser un objeto de tipo Dialog :

Dialog

diag;

Dilogos
Para construir un dialogo debemos definir un objeto de la clase
Builder o
constructor de dilogos, mediante :
Builder builder = new AlertDialog.Builder(this);

Dilogos
Ejecutando distintos mtodos de este objeto Builder, podemos ir
definiendo los
contenidos de nuestro dialogo.
Finalmente, el dialogo se crea mediante :

Dialogo = builder.create();

Ejercicio

Ejercicio
En el siguiente ejemplo creamos un dialogo muy simple que solo
incluye un
icono y un mensaje de texto.
En primer lugar, creamos una actividad Dialogo con el siguiente
layout, que incluye un botn para lanzar el dialogo:

<?xml version="l.0" encoding="utf-8"?>


<LinearLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height= "fill_ parent"
android:orientation = "vertical"
android:background = "#ffffff"
>
<TextView
android:textColor= "# 000000"
android:textSize = "2 0sp"
android:layout_width = "fill_parent"
android:layout_height= "wrap_content"
android:text= "Ejemplo de un dialogo simple" />
<Button
android :id="@+id/buttonl"
android : layout_width = " fill_ parent"
android : layout_height= "wrap_content"
android : textSize = "20sp"
android : text= "Mostrar el dialogo " />
</LinearLayout>

A continuacin, escribimos el siguiente programa Dialogo.java, que


incluye
el mtodo onCreateDialog( int id ) , dependiente de un parametro
entero que
permite definir varios dilogos distintos dependiendo de las
necesidades del
programa. Dentro de este mtodo definimos un icono y un texto para
el dialogo.
Aqu se muestra el resultado :

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog ;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener ;
import android.widget.Button ;
public class Dialogo extends Activity implements OnClickListener
{
/ * * Called when the activity is f i r s t c re a te d . * /
@override
public void onCreate(Bundle savedlnstanceState )
{
super.onCreate(saved lnstanceState );

setContentView(R.layout.main);
Button boton= (Button) findViewByld(R.id.buttonl);
boton.setOnClickListener(this);
}
@Override
public void onClick(View argO)
{
showDialog(0);
}
@Override
protected Dialog onCreateDialog(int id)
{
Dialog dialogo=null;
if(id==0)
{
Builder builder=new AlertDialog.Builder(this) ;
builder=builder.setIcon(R.drawable.ic_launcher);
builder=builder.setTitle("Este es el aspecto de un dialogo");
dialogo=builder.create ();
}
return dialogo;
}
}

Dilogos con botones

Mediante onCreateDialog, podemos incluir hasta tres botones en el


dialogo,
denominados :boton positivo,
boton negativo y
boton neutro.
El boton positivo (primer botn) se crea con el metodo
setPositiveButton , que toma como argumentos el texto del botn y un
objeto que implementa la interfaz
Dialoglnterface.OnClickListener, con las instrucciones a ejecutar al
pulsar el botn (similar a la interfaz OnClickListener).
Los botones neutro y negativo se definen de forma similar. Para saber
que botn se ha
pulsado, usamos las constantes de la clase Dialoglnterface
BUTTON_POSITIVE, BUTTON_NEGATIVE, BUTTON_NEUTRAL,

Para el ejemplo utilizaremos el siguiente layout:


<?xml version = "1 . 0" encoding = "utf-8 " ?>
< LinearLayout
xmlns:android=ff http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#ffffff"
>
<TextView
android :id = "@+id/textView"
android : textColor= "#000000"
android : textSize = "20sp "
android : layout_width = "fill_ parent"
android : layout_height= "wrap_content"
android : te x t= "Un d ialogo con botones" />
<Button
android : id = "0+id/button1"
android : layout_width = "fill_parent"
android : layout height= "wrap_content"
android : textSize = "2 0sp"
android : text= "Mostrar el dialogo " />
</LinearLayout>

A continuacin se detalla el
programa
DialogoConBotones.java
La interfaz para los botones
se implementa en la clase
DListener.

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.Dialoglnterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Textview;
public class DialogoConBotones Activity extends Activity
implements OnClickListener
{
Textview tv;
/** Called when the activity is first created. */
public void onCreate(Bundle savedlnstanceState)
{
super.onCreate(savedlnstanceState);
setContentView(R.layout.main);
tv=(Textview) findViewByld(R .id.textview);
Button boton= (Button) findViewByld(R .id.buttonl)
boton.setOnClickListener(this);
}

@Override
public void onClick(View v)
{
showDialog(0) ;
}
@Override
protected Dialog onCreateDialog(int id)
{
DListener listener= new DListener();
Dialog dialogo=null;
if(id==0)
{
Builder builder=new AlertDialog.Builder(this);
builder=builder.setIcon(R.drawable.ic_launcher);
builder=builder.setTitle("Esto es un dialogo con botones")
builder=builder.setMessage("Este es el mensaje. "\n Pulse uno de los tres botones
para continuar
builder=builder.setPositiveButton("Boton positivo", listener);
builder=builder.setNegativeButton("Boton negativo", listener);
builder=builder.setNeutralButton("Boton neutro", listener);
dialogo=builder.create();
}
return dialogo;
}

class Dlistener implements Dialoglnterface.OnClickListener


{
@Override
public void onClick(Dialoglnterface dialog, int which)
{
if(which == Dialoglnterface.BUTTON POSITIVE)
tv.setText("Boton positivo pulsado");
i f (which == Dialoglnterface.BUTTON_NEGATIVE)
tv.setText("Boton negativo pulsado");
if(which == Dialoglnterface.BUTTON_NEUTRAL)
tv.setText("Boton neutro pulsado");
}

} // end
Dialoglnterface.OnClickListener
}

Você também pode gostar