2012-02-22 2 views
2

мне нужно, где я должен автоматическое закрытие диалогового окна оповещения в 2 различных ситуацияхAuto-Close Предупреждение Dialog

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

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

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

Благодарности,

SKU

ответ

0

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

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

4

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

Привет Закария ... Я последовал за то, что вы сделали с Case-2. Но WRT к случаю 1, я жду возвращаемого значения в строках, который займет в основном минимум 4 секунды (из отдельного потока) до максимального значения 8 секунд для возврата. Я не уверен, что ваш фрагмент кода для случая 1 будет работать? Не могли бы вы объяснить эту часть? – sku

+0

@sku: просто из любопытства, что заставляет вас быть уверенным, что значение будет возвращено в течение 8 секунд max? – Zakaria

+0

Его только из-за долгого наблюдения, Если он не отвечает с ответом в течение 8 секунд времени ... Есть что-то не так. – sku