AlertDialog по какой-то причине показывает полноэкранный режим

Я создаю и показываю стандартный простой AlertDialog при нажатии кнопки в навигационном ящике с контекстом Activity, по неизвестной причине он показывает полноэкранный режим, но мне нужен стандартный диалог в центре.

Вот мой код (тот же код работает, как и ожидалось, в других действиях моего приложения):

new AlertDialog.Builder(mainActivity)
    .setTitle(mainActivity.getString(R.string.attention))
    .setPositiveButton(mainActivity.getString(R.string.exit), (dialog, which) -> {
        dialog.dismiss();
        mainActivity.finish();
    })
    .setNegativeButton(mainActivity.getString(R.string.cancel), (dialog, which) -> {
        dialog.dismiss();
    })
    .setMessage(mainActivity.getString(R.string.warnLogout))
    .create()
    .show();

Макет диалога зависит от темы, которую вы выбрали для приложения, возможно, вы выбрали полноэкранную тему.

christian mini 14.05.2019 12:26

нет, полноэкранной темы нет

Dmitriy Pavlukhin 14.05.2019 12:28

Вы применили какой-то стиль в своей теме? Можешь показать свой styles?

sanjeev 14.05.2019 12:36

Да, но тот же код хорошо работает в другом действии с тем же стилем

Dmitriy Pavlukhin 14.05.2019 12:37

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

sanjeev 14.05.2019 12:52

Да, я перепроверил контекст.

Dmitriy Pavlukhin 14.05.2019 12:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
161
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Пожалуйста, попробуйте этот код для диалогового окна предупреждения.

 new AlertDialog.Builder(this)
                .setTitle("Alert")
                .setMessage("Hello This is Alert Dialog.")
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                }).setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        }).show();

Выход :

это ничего не меняет

Dmitriy Pavlukhin 14.05.2019 12:43

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

Faldu Jaldeep 14.05.2019 12:45

Как я уже сказал, Faldu, он работает так, как ожидалось, в других видах деятельности.

Dmitriy Pavlukhin 14.05.2019 12:47
Ответ принят как подходящий

Проблема была в неправильном импорте: недавно я перенес проект на AndroidX, и когда я писал логику AlertDialog, по ошибке выбрал устаревший импорт. Похоже, что ошибок и предупреждений не показывалось, а кнопки работали, как и ожидалось, но в моем случае это отображалось как неправильное диалоговое окно полноэкранного макета:

НЕПРАВИЛЬНО:

import android.app.AlertDialog;

ПРАВИЛЬНО:

import androidx.appcompat.app.AlertDialog;

Другие вопросы по теме