Когда я должен отклонить диалоги? - PullRequest
1 голос
/ 04 января 2012

Я немного прочитал о диалогах в Android, и у меня открыт вопрос:

Когда я использую методы Activity, которые обрабатывают диалоги (такие как: onCreateDialog(...)), я должен или не должен закрывать диалог в onPause()? Или, может быть, мне следует отклонить его, только если я его сохранил - создал переменную члена Activity, которая имеет ссылку на этот диалог?

Я нашел этот ответ: https://stackoverflow.com/a/2851833/501560, говоря, что мне нужно явно вызвать метод dismiss(), но я читал некоторые другие ресурсы, в которых говорится, что Activity должен обрабатывать его сам ...

Спасибо.

Ответы [ 3 ]

2 голосов
/ 04 января 2012

Отклонение диалога

Когда вы будете готовы закрыть свой диалог, вы можете закрыть его, вызвав dismiss () для объекта Dialog.При необходимости вы также можете вызвать dismissDialog (int) из Activity, который эффективно вызывает dismiss () для Dialog для вас.

Если вы используете onCreateDialog(int) для управления состоянием ваших диалогов (как обсуждалось)в предыдущем разделе), затем каждый раз, когда ваш диалог закрывается, состояние объекта Dialog сохраняется действием.Если вы решите, что вам больше не нужен этот объект, или важно, чтобы состояние было очищено, вам следует позвонить removeDialog(int).Это удалит все внутренние ссылки на объект, и если диалоговое окно отобразится, оно отклонит его.

Использование слушателей dismiss

Если вы хотите, чтобы ваше приложениевыполните некоторые процедуры в тот момент, когда диалоговое окно закрыто, затем вы должны подключить слушателя при закрытии к вашему диалогу.

Сначала определите DialogInterface.OnDismissListener interface.Этот интерфейс имеет только один метод, onDismiss(DialogInterface), который будет вызываться при закрытии диалога.Затем просто передайте реализацию OnDismissListener на

setOnDismissListener().

Однако обратите внимание, что диалоги также могут быть "отменены".Это особый случай, который указывает, что диалоговое окно было явно отменено пользователем.Это произойдет, если пользователь нажимает кнопку «назад», чтобы закрыть диалоговое окно, или если диалоговое окно явно вызывает cancel() (возможно, из-за кнопки «Cancel» в диалоговом окне).Когда диалог отменяется, OnDismissListener по-прежнему будет уведомляться, но если вы хотите, чтобы вам сообщили, что диалог был явно отменен (и обычно не отклоняется), вам следует зарегистрировать

DialogInterface.OnCancelListener with setOnCancelListener().
0 голосов
/ 04 февраля 2017

Я думал, что диалоги должны быть отклонены в onStop() или onPause() в жизненном цикле Activity.

0 голосов
/ 04 января 2012

Вам никогда не придется закрывать диалоговое окно, если оно управляется действием. Деятельность будет закрывать диалоговое окно после его уничтожения. Если действие приостановлено, диалог не нужно закрывать.

...