Задать вопрос
@orbit070

Как удалять/закрывать диалоговые окна?

Здравствуйте.

1. Есть диалоговое окно, которое унаследовано от DialogFragment. Я его отображаю с помощью show(). Если пользователь в нем нажимает на нужную мне кнопку, то я выполняю нужные действия. Если нажимает назад или на пустую область экрана, я ничего не делаю.

2. Есть диалоговое окно, которое унаследовано от Dialog(в нем я отображаю ProgressBar). Кнопка назад или нажатие на пустую область экрана залочены. Отображаю с помощью show(), скрываю с помощью hide().

Первый вопрос: если в первом случае пользователь нажимает кнопку назад или на пустую область экрана, то автоматически срабатывает метод hide(), который я во втором случае вызываю сам?

Второй вопрос: вызова метода hide() достаточно для полного и правильного закрытия диалогового окна? Я натыкался на метод dismiss но не очень хорошо понимаю, когда его нужно вызывать и нужно ли вообще? Буду очень благодарен за объяснение, спасибо.
  • Вопрос задан
  • 73 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
thelongrunsmoke
@thelongrunsmoke
Программист
1) Когда пользователь закрывает диалог, тапнув в любом месте, вызывается cancel(), а за ним dismiss(), hide() не вызывается.
2) Нет. Метод hide() только скрывает диалог, чтобы его можно было снова показать, он остаётся в памяти. Если диалог более не требуется, вызывайте dismiss(), чтобы корректно его уничтожить, или cancel(), если требуется предварительно вызвать обработчик повешенный на onCancel().

Коротко. Если сделать диалог hide(), то его можно show(); если сделать dismiss(), то show() вызовет ошибку.

Подразумевается, что диалог - одноразовая сущность, создаётся, показывается и уничтожается, после взаимодействия с пользователем. Основное кейс для hide() - отображение прогресса длительных процессов, когда нужно позволить пользователю скрыть диалог.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
danial72
@danial72
flutter dart.
1) если правильно помню, то да вызывается hide
2) у диалогового окна есть 3 исхода : человек подтверждает действие описание и пожалуй, человек отказывается (тот самый dismiss) и человек закрывает модалку без решения. Dismiss это про выбор действия человеком на самом модальном окне
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Brief Москва
от 150 000 до 210 000 ₽
СМК-РК Москва
от 200 000 до 250 000 ₽
Idea Platform Москва
от 90 000 до 180 000 ₽