Диалоги в любой операционной системе, и в андроид в частности, являются всплывающим информационным окном взаимодействия в пользователем.

Создание проекта Диалог

Создадим простое приложение для андроид, вызывающее диалог с кнопками "Да" и "Нет". В Android Studio создадим новый проект, назовем его MyDialog. В файле string.xml внесем несколько строковых значений, для текста диалога, кнопок.

<resources>
    <string name="app_name">My Dialog</string>
    <string name="btn">Нажми меня</string>
    <string name="mydialog">"Привет я ваш диалог!\nНажми любую кнопку!"</string>
    <string name="yes">Нажата кнопка Да</string>
    <string name="no">Нажата кнопка Нет</string>
</resources>

В файле main.xml для элемента TextView очистим значение android:text="" и добавим andriod:id="@+id/text2". Добавим в разметку RelativeLayout(относительное позиционирование) и поместим туда TextView и кнопку Button с andriod:id="@+id/button". Кнопку расположим по центру, текстовую метку выше кнопки.

<relativelayout
	android:layout_width="368dp"
	android:layout_height="495dp" 
	tools:layout_editor_absolutex="8dp"
	tools:layout_editor_absolutey="8dp"
	tools:ignore="MissingConstraints">

<button
	android:id="@+id/button" 
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content"
	android:layout_alignparenttop="true"
	android:layout_centerhorizontal="true"
	android:layout_margintop="112dp"
	android:text="@string/btn"
	tools:layout_editor_absolutex="148dp"
	tools:layout_editor_absolutey="184dp">
</button>

<textview
	android:id="@+id/textView2"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:text=""
	android:layout_alignparenttop="true"
	android:layout_centerhorizontal="true"
	android:layout_margintop="58dp">
</textview>
</relativelayout>

В файле MainActivity.java перед функцией onCreate объявим переменную mytv типа TextView.

    TextView mytv;

В функцию onCreate добавим переменную mybtn с типом Button и свяжем её через findViewById() с элементом button, так же свяжем переменную mytv с элементом text2.

Button mybtn = (Button)findViewById(R.id.button);
mytv = (TextView)findViewById(R.id.textView2);

Функция ShowAlertDialog()

Создадим обработчик нажатия на кнопку mybtn в котором напишем функцию ShowAlertDialog()

mybtn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
              ShowAlertDialog(v);

            }
        });

Вне функции onCreate создадим функцию ShowAlertDialog(), с реакцией нажатия на кнопку "Да", с подфункцией onClick, передающей в text2 через mytv текст из строкового ресурса yes.

public void ShowAlertDialog(View view){
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage(R.string.mydialog);
        alertDialogBuilder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mytv.setText(R.string.yes);
            }
        });

Напишем обработку нажатия на кнопку "Нет" аналогичным образом, и произведем вызов самого диалога.

alertDialogBuilder.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mytv.setText(R.string.no);
            }
        });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }

Запуск приложения

Запустим приложение в эмуляторе, и нажав на кнопку вызова диалога, мы можем выбрать "Да" или "Нет",

Диалог в андроид: пишем приложение в Android Studio

произойдёт закрытие диалога, а в главном окне будет видно какая кнопка была нажата.

Диалог в андроид: пишем приложение в Android Studio

Полный текст strings.xml

<resources>
    <string name="app_name">My Dialog</string>
    <string name="btn">Нажми меня</string>
    <string name="mydialog">"Привет я ваш диалог!\nНажми любую кнопку!"</string>
    <string name="yes">Нажата кнопка Да</string>
    <string name="no">Нажата кнопка Нет</string>
</resources>

Полный текст main.xml

<!--?xml version="1.0" encoding="utf-8"?-->
<android.support.constraint.constraintlayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="ru.maxfad.mydialog.MainActivity">

<relativelayout
 android:layout_width="368dp"
 android:layout_height="495dp"
 tools:layout_editor_absolutex="8dp"
 tools:layout_editor_absolutey="8dp"
 tools:ignore="MissingConstraints">

<button android:id="@+id/button"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignparenttop="true"
 android:layout_centerhorizontal="true"
 android:layout_margintop="112dp"
 android:text="@string/btn"
 tools:layout_editor_absolutex="148dp"
 tools:layout_editor_absolutey="184dp">
</button>

<textview
 android:id="@+id/textView2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text=""
 android:layout_alignparenttop="true"
 android:layout_centerhorizontal="true"
 android:layout_margintop="58dp">
</textview>

</relativelayout>

</android.support.constraint.constraintlayout>

Полный текст MainActivity.java

package ru.maxfad.mydialog;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView mytv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button mybtn = (Button)findViewById(R.id.button);
        mytv = (TextView)findViewById(R.id.textView2);

        mybtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ShowAlertDialog(v);

            }
        });

    }


    public void ShowAlertDialog(View view){
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage(R.string.mydialog);
        alertDialogBuilder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mytv.setText(R.string.yes);
            }
        });

        alertDialogBuilder.setNegativeButton("Нет", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mytv.setText(R.string.no);
            }
        });
        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }
}

В этом видео напишем приложение в Android Studio, создающее диалог:

Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

 С уважением, авторы сайта Компьютерапия


Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!



We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies).

You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok