AlertDialog с двумя кнопками

| 20.07.2014

В этом уроке мы рассмотрим, как можно создать AlertDialog в Андроид-приложении с двумя кнопками выбора (Отмена и принятие — ОК).

Нам потребуется создать три файла:

1. activity_main.xml
2. strings.xml
3. MainActivity.java

Файл layout-а содержит только один вложенный элемент Button, в свойстве onclick которого мы прописали метод-обработчик нажатия на кнопку (будет вызван диалог).

Код res/layout/activity_main.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="ru.androiddocs.alertdialogbuttons.MainActivity" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="@string/click" />
 
</LinearLayout>

Файл строковых ресурсов res/values/strings.xml

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<resources>
 
    <string name="app_name">AlertDialogButtons</string>   
    <string name="action_settings">Settings</string>
    <string name="dialog_title">Диалог с кнопками</string>
    <string name="dialog_message">Нажмите на одну из кнопок</string>
    <string name="cancel">Отмена</string>
    <string name="ok">OK</string>
    <string name="click">Кликни!</string>
 
</resources>

Код MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package ru.androiddocs.alertdialogbuttons;
 
import android.support.v7.app.ActionBarActivity;
import android.app.AlertDialog;
import android.content.DialogInterface;
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 onClick(View v) {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle(R.string.dialog_title)
                .setMessage(R.string.dialog_message)                      			
                .setCancelable(true)
                .setNegativeButton(R.string.cancel,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // нажато "Отмена"
                                Toast.makeText(getBaseContext(), "Отмена", 
                                        Toast.LENGTH_SHORT).show();
                                dialog.cancel();
                            }
                        })
                .setPositiveButton(R.string.ok, 
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // нажато "OK"
                                Toast.makeText(getBaseContext(), "OK", 
                                        Toast.LENGTH_SHORT).show();
                                dialog.cancel();
                            }
                });
        AlertDialog alert = builder.create();
        alert.show();
    }
}

Здесь вся логика находится в методе onClick(). Мы создаем объект типа AlertDialog.Builder, добавляем заголовок (setTitle()), текст диалога — setMessage(). Также добавляем две кнопки: setNegativeButton() и setPositiveButton(). В параметрах последних двух методов прописываем также обработчики-слушатели нажатия. В качестве выбранного действия выводим лишь всплывающее сообщение Toast с соответствующим текстом. Закрываем диалог методом:

1
 dialog.cancel()

После того, как все описано, создаем и показываем диалог:

1
2
AlertDialog alert = builder.create();
alert.show();

Теперь все запускаем и тестируем. При нажатии на кнопку появляется окно диалога.

AlertDialog с двумя кнопками

AlertDialog с двумя кнопками

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*