Android — Alert Dialog (Диалог предупреждения)


Диалог — это небольшое окно, в котором пользователю предлагается принять решение или ввести дополнительную информацию.

Если вы хотели спросить пользователя о принятии решения между «да» или «нет» в ответ на какое-либо конкретное действие, предпринятое пользователем, оставаясь в том же действии и не меняя экран, вы можете использовать диалоговое окно предупреждений.

Чтобы создать диалоговое окно с предупреждением, вам необходимо создать объект AlertDialogBuilder, который является внутренним классом AlertDialog. Его синтаксис приведен ниже.

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

Теперь вам нужно установить положительную (да) или отрицательную (нет) кнопку с помощью объекта класса AlertDialogBuilder. Его синтаксис

alertDialogBuilder.setPositiveButton(CharSequence text, 
   DialogInterface.OnClickListener listener)
alertDialogBuilder.setNegativeButton(CharSequence text, 
   DialogInterface.OnClickListener listener)

Помимо этого, вы можете использовать другие функции, предоставляемые классом построителя, для настройки диалогового окна предупреждений. Они перечислены ниже

Тип и описание метода
1setIcon (Drawable icon)

Этот метод устанавливает иконку диалогового окна предупреждения.

2setCancelable (boolean cancel able)

Этот метод устанавливает свойство, позволяющее отменить диалог

3setMessage (CharSequence message)

Этот метод устанавливает сообщение, которое будет отображаться в диалоговом окне.

4setMultiChoiceItems (CharSequence[] элементы, логическое значение[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)

Этот метод устанавливает список элементов, которые будут отображаться в диалоговом окне в качестве содержимого. Выбранный вариант будет передан слушателю.

5setOnCancelListener (DialogInterface.OnCancelListener onCancelListener)

Этот метод Устанавливает обратный вызов, который будет вызываться, если диалог будет отменен.

6setTitle (CharSequence title)

Этот метод устанавливает заголовок, который будет отображаться в диалоговом окне

После создания и настройки построителя диалогового окна вы создадите диалоговое окно с предупреждением, вызвав метод create () класса построителя. Его синтаксис

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

Это создаст диалоговое окно с предупреждением и отобразит его на экране.

Фрагмент диалога

Прежде чем перейти к примеру, нам необходимо создать фрагмент диалога. Фрагмент диалога — это фрагмент, который может отображать фрагмент в диалоговом окне.

public class DialogFragment extends DialogFragment {
   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
      // Используйте класс Builder для удобного построения диалогов 
      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();
         });
         // Создайте объект AlertDialog и верните его 
         return builder.create();
      }
   }
}

Диалог списка

Он используется для отображения списка элементов в диалоговом окне. Предположим, пользователю нужно выбрать список элементов или щелкнуть элемент из нескольких списков элементов. В этой ситуации мы можем использовать диалоговое окно списка.

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) {
         // Аргумент which содержит позицию индекса 
         // выбранного элемента 
      }
   });
   return builder.create();
}

Диалог списка с одним выбором

Он используется для добавления единственного списка выбора в диалоговое окно. Мы можем отмечать или снимать отметку в соответствии с выбором пользователя.

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) {
            // Если пользователь проверил элемент, добавьте его к выбранным элементам.
            mSelectedItems.add(which);
         }
         
         else if (mSelectedItems.contains(which)) {
            // В противном случае, если элемент уже есть в массиве, удалите его. 
            mSelectedItems.remove(Integer.valueOf(which));
         }
      }
   })
   
   // Устанавливает кнопки действий
   .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int id) {
         // Пользователь нажал кнопку ОК, поэтому сохраните где-нибудь результаты . 
         // mSelectedItems или верните их компоненту, открывшему диалог
         ...
      }
   })
   
   .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int id) {
         ...
      }
   });
   return builder.create();
}

Пример

В следующем примере демонстрируется использование AlertDialog в android.

Чтобы поэкспериментировать с этим примером, вам нужно запустить это на эмуляторе или реальном устройстве.

ШагиОписание
1Вы будете использовать Android studio для создания Android-приложения и назовете его My Application в пакете com.example.sairamkrishna.myapplication.
2Измените файл src / MainActivity.java, чтобы добавить код диалогового окна предупреждения для его запуска.
3Измените XML-файл макета res / layout / activity_main.xml, добавьте любой компонент графического интерфейса, если это необходимо.
4Нет необходимости изменять строковые константы по умолчанию. Студия Android позаботится о строках по умолчанию в values ​​/ string.xml
5Запустите приложение, выберите работающее устройство Android, установите на него приложение и проверьте результаты.

Вот модифицированный код 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();
   }
}

Вот модифицированный код res / layout / activity_main.xml

В приведенном ниже коде abc указывает на логотип

<?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="https://android-java.ru/android/@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>

Вот код по умолчанию Strings.xml

<resources>
    <string name="app_name">My Application</string>
</resources>

Вот код по умолчанию 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>

Попробуем запустить ваше приложение. Я предполагаю, что вы подключили свое настоящее мобильное устройство Android к компьютеру. Чтобы запустить приложение из студии Android, откройте один из файлов активности вашего проекта и нажмите «Выполнить». Значок Eclipse Run значок на панели инструментов. Перед запуском вашего приложения Android studio отобразит следующее окно, чтобы выбрать вариант, в котором вы хотите запустить приложение Android.

Учебное пособие по работе с камерой Anroid

Выберите свой вариант и нажмите на него. Предположим, если вы нажали кнопку «Да», то результат будет следующим:

Учебное пособие по работе с камерой Anroid

если вы не нажмете ни на одну кнопку, он вызовет finish () и закроет ваше приложение.

Поделись с друзьями:

Оставьте комментарий