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

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

Создадим простое приложение для андроид, вызывающее диалог с кнопками "Да" и "Нет". В 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, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

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


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




Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
Ok