Диалог закрывается после включения экрана - PullRequest
1 голос
/ 09 ноября 2011

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

Вот как я создаю диалог

Dialog lVoiceDialog=new AlertDialog.Builder(this).setIcon(
            R.drawable.ic_dialog_alert).setMessage(mVoiceCallMessage)
            .setPositiveButton(R.string.yes, clickListener)
            .setNegativeButton(R.string.no,clickListener1).create();
         lVoiceDialog.setOnDismissListener(dismissListener);

где clickListener и clickListener1 - отдельные прослушиватели для положительных и отрицательных кнопок соответственно, а dismissListener - прослушиватель для запуска кода, когда диалоговое окно будет закрыто.

Пожалуйста

Ответы [ 4 ]

1 голос
/ 09 ноября 2011

Зачем вам нужен dismissListener? Во сколько способов закрыть ваш диалог? Если только когда пользователь выбирает 'ok' или отмену, вам не нужно отменять слушателя.если вам нужно выполнить какое-то задание до закрытия диалогового окна, вы можете выполнить его в порядке или отменить прослушиватель.

1 голос
/ 09 ноября 2011

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

Ваша активность (возможно) закрывается при выключении экрана. и перезапускается, когда возвращается в нормальный жизненный цикл активности Android.

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

Это можно продемонстрировать, открыв диалоговое окно и повернув телефон. Переключение ориентации делает то же самое.

1 голос
/ 09 ноября 2011

использовать AsyncTask

   @Override
                protected void onPostExecute(Void result) {
                    // TODO Auto-generated method stub
                    super.onPostExecute(result);

                example.dismiss();
}
0 голосов
/ 10 января 2013

Кроме того, если вы по какой-либо причине вызвали метод finish () в методе onPause (), избавление от него может решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...