Introduction

It is quite fascinating when you select or choose something and a small window prompts you before your screen asks for your choice. So these small prompts that take the user's wish as input are called a Dialog in Android.
Let us consider the example of when we delete a file in our Android supported phone. A window then prompts “Do you want to reboot in safe mode?”. You then have two choices, either press Yes or press No. So this might be a very good and lucid example.
Dialog in android with button

Dialog Design

Generally, the design consists of a basic title and simple action buttons.
Note: The Acceptance action part of the buttons is always on the right side and a dismissive action part must be on the left. The affirmative or positive action result is in the continuation of the process and on the contrary, the negative response leads back to the activity or previous state. The Dialog class is the parent class of all types of dialogs, meanwhile when a subclass that is extending the Dialog class, the programmer must see all the key aspects of the class.

Alert dialog

An Alert dialog can show a title and up to three buttons for a list of selected items or a custom layout.DatePickerDialog or TimePickerDialog. It is a dialog with the pre-defined user interface that allows the user to select a date or time.

Dialog fragment class

Instead of using the preceding specified classes, we must use the DialogFragment as a container. The preceding classes define classes that show or maintain the style property. The DialogFragment class provides all the controls you need to create for your dialog and manage its appearance, instead of calling methods on the Dialog object.
Using the DialogFragment class does not even change or distort the original code or doesn't spoil the lifecycle. This class provides or allows you to reuse the dialog's user interface as an embeddable component in a larger user interface.

Creating the Dialog fragment

Dialogs design guides just by extending DialogFragment and creating an AlertDialog in the onCreateDialog() callback method.
For example, here's a basic AlertDialog that's managed within a DialogFragment.
Manifest file:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.alertdialog"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6. <uses-sdk
  7. android:minSdkVersion="11"
  8. android:targetSdkVersion="21" />
  9. <application
  10. android:allowBackup="true"
  11. android:icon="@drawable/ic_launcher"
  12. android:label="@string/app_name"
  13. android:theme="@style/AppTheme" >
  14. <activity
  15. android:name="com.example.alertdialog.MainActivity"
  16. android:label="@string/app_name" >
  17. <intent-filter>
  18. <action android:name="android.intent.action.MAIN" />
  19. <category android:name="android.intent.category.LAUNCHER" />
  20. </intent-filter>
  21. </activity>
  22. </application>
  23. </manifest>
    Now we have defined the manifest here that includes a target and minimum SDK support and much more as shown in the code. Now it is time to define the attributes to the XML file.
    Defining the attributes to the activity_main.xml file all the resources must be defined here.
    Activity_main.xml
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent" >
    5. <EditText
    6. android:id="@+id/EditText01"
    7. android:text="I Love Android"
    8. android:layout_height="50dip"
    9. android:layout_width="180dip">
    10. </EditText>
    11. <Button
    12. android:id="@+id/Button01"
    13. android:layout_width="wrap_content"
    14. android:layout_height="wrap_content"
    15. android:layout_below="@+id/EditText"
    16. android:text="Clear Screen">
    17. </Button>
    18. </RelativeLayout>
    MainActivity.java
    1. package com.gkumar.example.alertdialog;
    2. import android.support.v7.app.ActionBarActivity;
    3. import android.support.v7.app.ActionBar;
    4. import android.support.v4.app.Fragment;
    5. import android.app.AlertDialog;
    6. import android.app.Dialog;
    7. import android.content.DialogInterface;
    8. import android.os.Bundle;
    9. import android.view.LayoutInflater;
    10. import android.view.Menu;
    11. import android.view.MenuItem;
    12. import android.view.View;
    13. import android.view.ViewGroup;
    14. import android.widget.Button;
    15. import android.widget.EditText;
    16. import android.widget.Toast;
    17. import android.os.Build;
    18. public class MainActivity extends ActionBarActivity
    19. {
    20. Button Clear;
    21. EditText edit_data;
    22. //Called when the activity is first created
    23. @Override
    24. public void onCreate(Bundle savedInstanceState)
    25. {
    26. super.onCreate(savedInstanceState);
    27. setContentView(R.layout.main);
    28. Clear=(Button)findViewById(R.id.Button01);
    29. edit_data=(EditText)findViewById(R.id.EditText01);
    30. Clear.setOnClickListener(new View.OnClickListener()
    31. {
    32. @Override
    33. public void onClick(View v)
    34. {
    35. AlertDialog.Builder builder=new AlertDialog.Builder(v.getContext());
    36. //Set a title
    37. builder.setTitle("Confirm");
    38. //Set a message
    39. builder.setMessage("Do you want to Clear?");
    40. ////Here Set a listener to be called when the positive button of the dialog is pressed.
    41. builder.setPositiveButton("OK",new DialogInterface.OnClickListener()
    42. {
    43. @Override
    44. public void onClick(DialogInterface dialog, int which)
    45. {
    46. edit_data.setText("");
    47. //Displaying a toast message
    48. Toast.makeText(getApplicationContext(), "Your text has been cleared", Toast.LENGTH_LONG).show();
    49. }
    50. });
    51. builder.setNegativeButton("Cancel",new DialogInterface.OnClickListener()
    52. {
    53. @Override
    54. public void onClick(DialogInterface dialog, int which)
    55. {
    56. // TODO Auto-generated method stub
    57. dialog.cancel();
    58. }
    59. });
    60. //Creating the dialog
    61. AlertDialog alertdialog=builder.create();
    62. //show the alertdialog
    63. alertdialog.show();
    64. }
    65. });
    66. }
    67. }
    Here depending upon the complexity of the dialog created we can implement a variety of callbacks methods.

    Adding a list

    There are the following three kinds of lists available with the AlertDialog APIs. Here let us create a list having three choices with the sentItems() method.
    1. @Override
    2. public Dialog onCreateDialog(Bundle savedInstanceState) {
    3. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    4. builder.setTitle(R.string.pick_color)
    5. .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
    6. public void onClick(DialogInterface dialog, int which) {
    7. // The 'which' argument contains the index position
    8. // of the selected item
    9. }
    10. });
    11. return builder.create();
      In this code above we have three choices in the list.

      Summary

      This article explained the basics of dialogs that appear on Android devices that ask the choice of the user or alert dialog that also asks for the user's choice. Depending upon the work the user is doing, the dialog appears and asks to continue to the next work and also to modify the current work.