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.