2012-02-22 107 views
2

我有需要,我不得不自动关闭警报对话框中2种不同的情况下自动关闭警报对话框

  1. 自动关闭对话框后,我得到它我在等待
  2. 自动返回值 - 在用户没有输入10秒后关闭对话框。我知道我应该使用某种计时器,但不知道如何将它与对话框连接起来。

我知道并理解它不正确的方式来处理用户界面,但我的要求需要我这样做。

请分享你的想法,

感谢,

SKU

回答

0

从AlertDialog,在那里你处理你的计时器onStart继承自定义对话框。使用AsyncTask将是很好的倒计时。

自动关闭对话框不是什么坏事...至少我们总是看到这个在改变屏幕分辨率(赢得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

嗨扎卡里亚......我跟着你与案例2做了什么。但WRT的情况1,我正在等待返回值的字符串,这将大多数最少4秒(从一个单独的线程)到最大8秒返回。我不确定您的案例1的代码片段是否可以使用?你能解释一下那部分吗? – sku 2012-02-22 03:19:22

+0

@sku:出于好奇,是什么让你确定该值会在8秒内返回最大值? – Zakaria 2012-02-22 08:02:07

+0

它只是因为长时间的观察,如果它没有在8秒内回答答案......有什么问题。 – sku 2012-02-22 21:36:56