Приостановить активность, когда отображается AlertDialog - PullRequest
0 голосов
/ 11 января 2019

Мне известно, что, поскольку AlertDialog является частью представления Activity, то, показывая, что оно не вызывает OnPause из Activity. Чего я хочу добиться, так это показать AlertDialog и каким-то образом вызвать OnPause представления Activity.

В OnResume я установил OnGlobalLayoutListener, чтобы отрегулировать положение прокрутки в зависимости от того, видна ли клавиатура. Однако, если AlertDialog виден, то, вероятно, не имеет смысла продолжать слушать изменения макета и соответственно корректировать вид прокрутки, учитывая, что «фокус» в настоящее время находится на AlertDialog, а Activity частично виден в фоновом режиме.

Я знаю, что могу начинать деятельность в стиле «всплывающее», но это не то, чего я хочу; Я хочу использовать AlertDialog.

1 Ответ

0 голосов
/ 11 января 2019

Используйте другое занятие в качестве диалога Затем он автоматически приостановит текущую активность. Чтобы начать активность в виде диалога, я определил его следующим образом в AndroidManifest.xml:

<activity android:theme="@android:style/Theme.Dialog" />

Используйте это свойство внутри тега активности, чтобы диалоговое окно не отображалось в списке недавно использованных приложений

android:excludeFromRecents="true"

Если вы хотите остановить уничтожение вашего диалога / действия, когда пользователь нажимает за пределами диалогового окна:

После того, как setContentView () в вашей активности используется:

this.setFinishOnTouchOutside(false);

Теперь, когда я вызываю startActivity (), он отображается в виде диалога, в котором предыдущее действие отображается, когда пользователь нажимает кнопку возврата.

Обратите внимание, что если вы используете ActionBarActivity (или тему AppCompat), вам нужно будет использовать вместо этого @ style / Theme.AppCompat.Dialog.

...