Android: diálogo de alerta
Un cuadro de diálogo es una pequeña ventana que le pide al usuario que tome una decisión o ingrese información adicional.
Algunas veces en tu aplicación, si quisieras preguntarle al usuario sobre tomar una decisión entre sí o no en respuesta a alguna acción en particular realizada por el usuario, permaneciendo en la misma actividad y sin cambiar la pantalla, puedes utilizar Alert Dialog.
Para crear un cuadro de diálogo de alerta, debe crear un objeto de AlertDialogBuilder que sea una clase interna de AlertDialog. Su sintaxis se da a continuación
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
Ahora debe configurar el botón positivo (sí) o negativo (no) usando el objeto de la clase AlertDialogBuilder. Su sintaxis es
alertDialogBuilder.setPositiveButton(CharSequence text,
DialogInterface.OnClickListener listener)
alertDialogBuilder.setNegativeButton(CharSequence text,
DialogInterface.OnClickListener listener)
Aparte de esto, puede utilizar otras funciones proporcionadas por la clase de constructor para personalizar el diálogo de alerta. Estos se enumeran a continuación
No Señor | Tipo de método y descripción |
---|---|
1 | setIcon(Drawable icon) Este método establece el icono del cuadro de diálogo de alerta. |
2 | setCancelable(boolean cancel able) Este método establece la propiedad de que el diálogo se puede cancelar o no |
3 | setMessage(CharSequence message) Este método establece el mensaje que se mostrará en el cuadro de diálogo de alerta |
4 | setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener) Este método establece la lista de elementos que se mostrarán en el cuadro de diálogo como contenido. La opción seleccionada será notificada por el oyente. |
5 | setOnCancelListener(DialogInterface.OnCancelListener onCancelListener) Este método establece la devolución de llamada que se llamará si se cancela el diálogo. |
6 | setTitle(CharSequence title) Este método establece el título para que aparezca en el diálogo |
Después de crear y configurar el generador de diálogos, creará un diálogo de alerta llamando al método create () de la clase del constructor. Su sintaxis es
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
Esto creará el diálogo de alerta y lo mostrará en la pantalla.
Fragmento de diálogo
Antes de entrar en un ejemplo, debemos conocer el fragmento de diálogo. El fragmento de diálogo es un fragmento que puede mostrar un fragmento en el cuadro de diálogo.
public class DialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
toast.makeText(this,"enter a text here",Toast.LENTH_SHORT).show();
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
});
// Create the AlertDialog object and return it
return builder.create();
}
}
}
Diálogo de lista
Se ha utilizado para mostrar la lista de elementos en un cuadro de diálogo. Supongamos que el usuario debe seleccionar una lista de elementos o, de lo contrario, debe hacer clic en un elemento de varias listas de elementos. En esta situación, podemos utilizar el diálogo de lista.
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(Pick a Color)
.setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
}
});
return builder.create();
}
Diálogo de lista de opción única
Se ha utilizado para agregar una lista de opciones únicas al cuadro de diálogo. Podemos marcar o desmarcar según la elección del usuario.
public Dialog onCreateDialog(Bundle savedInstanceState) {
mSelectedItems = new ArrayList();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("This is list choice dialog box");
.setMultiChoiceItems(R.array.toppings, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
// If the user checked the item, add it to the selected items
mSelectedItems.add(which);
}
else if (mSelectedItems.contains(which)) {
// Else, if the item is already in the array, remove it
mSelectedItems.remove(Integer.valueOf(which));
}
}
})
// Set the action buttons
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// User clicked OK, so save the mSelectedItems results somewhere
// or return them to the component that opened the dialog
...
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
...
}
});
return builder.create();
}
Ejemplo
El siguiente ejemplo demuestra el uso de AlertDialog en Android.
Para experimentar con este ejemplo, debe ejecutarlo en un emulador o en un dispositivo real.
Pasos | Descripción |
---|---|
1 | Utilizará Android Studio para crear una aplicación de Android y nombrarla como Mi aplicación en un paquete com.example.sairamkrishna.myapplication. |
2 | Modifique el archivo src / MainActivity.java para agregar un código de diálogo de alerta para iniciar el diálogo. |
3 | Modifique el archivo XML de diseño res / layout / activity_main.xml agregue cualquier componente GUI si es necesario. |
4 | No es necesario cambiar las constantes de cadena predeterminadas. Android Studio se encarga de las cadenas predeterminadas en values / string.xml |
5 | Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados. |
Aquí está el código modificado de src/MainActivity.java
package com.example.sairamkrishna.myapplication;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void open(View view){
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setMessage("Are you sure,
You wanted to make decision");
alertDialogBuilder.setPositiveButton("yes",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this,"You clicked yes
button",Toast.LENGTH_LONG).show();
}
});
alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
}
Aquí está el código modificado de res/layout/activity_main.xml
En el siguiente código abc indica el logo de tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alert Dialog"
android:id="@+id/textView"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorialspoint"
android:id="@+id/textView2"
android:textColor="#ff3eff0f"
android:textSize="35dp"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_alignLeft="@+id/textView"
android:layout_alignStart="@+id/textView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Alert dialog"
android:id="@+id/button"
android:layout_below="@+id/imageView"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_marginTop="42dp"
android:onClick="open"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView" />
</RelativeLayout>
Aquí es deStrings.xml
<resources>
<string name="app_name">My Application</string>
</resources>
Aquí está el código predeterminado de AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sairamkrishna.myapplication.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Intentemos ejecutar su aplicación. Supongo que ha conectado su dispositivo móvil Android real con su computadora. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar de la barra de herramientas. Antes de iniciar su aplicación,] Android Studio mostrará la siguiente ventana para seleccionar una opción donde desea ejecutar su aplicación de Android.
Seleccione su opción y luego haga clic en ella. Supongamos que, si ha hecho clic en el botón Sí, el resultado sería el siguiente
si hace clic en ningún botón, llamará a finish () y cerrará su aplicación.