Диалог автоматического закрытия оповещений - PullRequest
2 голосов
/ 22 февраля 2012

Мне нужно, где мне нужно автоматически закрывать диалог оповещения в 2 различных ситуациях

  1. Автоматически закрывать диалоговое окно после получения возвращаемого значения, которого я жду
  2. Автоматически закрывать диалоговое окно через 10 секунд после отсутствия ввода от пользователя. Я знаю, что должен использовать какой-то таймер, но не уверен, как прикрепить его к диалогу.

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

Пожалуйста, поделитесь своими мыслями,

Спасибо

Артикул

Ответы [ 2 ]

4 голосов
/ 22 февраля 2012

1- для первого случая:

AlertDialog alertDialog = new AlertDialog.Builder(Main.this).create();
...
alertDialog.show();
int valueIamWaitingFor = 5;
if (aValue == valueIamWaitingFor){
    alertDialog.hide();
}

2- для второго случая:

private static final ScheduledExecutorService executor = 
  Executors.newSingleThreadScheduledExecutor();
public AlertDialog alertDialog = new AlertDialog.Builder(Main.this).create();
...
alertDialog.show();
Runnable hideDialog= new Runnable() {
    public void run() {
       this.alertDialog.hide();
    }
};
executor.schedule(hideDialog, 10, TimeUnit.SECONDS);
0 голосов
/ 22 февраля 2012

Унаследуйте пользовательский диалог из AlertDialog, где вы обрабатываете свой таймер в onStart . Использование AsyncTask было бы хорошо для обратного отсчета.

Диалог автоматического закрытия не является чем-то плохим ... по крайней мере, мы всегда видим это в изменении разрешения экрана (win xp), что хорошо для такого сценария. Возможно, вы также можете включить таймер обратного отсчета на кнопку (например, «закрытие через 5 секунд»).

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