2011-07-04 55 views
0

在我的程序中,我希望此警報對話框在3000毫秒後顯示。我怎樣才能做到這一點?我嘗試了很多,但我不能。任何想法?Android:3000毫秒後的警報框

幫助總是感激......!

 AlertDialog.Builder successfullyLogin = new Builder(Register.this); 
    successfullyLogin.setCancelable(false); 
    successfullyLogin.setMessage("Successfully Login !"); 
// successfullyLogin.wait(3000);// this line is nt working 
    successfullyLogin.setPositiveButton("Ok",new DialogInterface.OnClickListener() 
    { 
    public void onClick(DialogInterface dialog,int which) 
    { 


    } 
    }); 

回答

2

我認爲你正在呼籲應專門用於多線程等待功能...

試試這個...

new Thread() 
    { 
     public void run() 
     { 
      sleep(3000); 
      AlertDialog.Builder successfullyLogin = new Builder(LWM.this); 
      successfullyLogin.setCancelable(false); 
      successfullyLogin.setMessage("Successfully Login !").show(); 
      } 
    }; 
+0

你不應該停下來,等待UI線程... –

+0

謝謝,但它不工作 – Randroid

+0

那麼你爲什麼接受答案? – ddewaele

1

而不是顯示一個警告框,你爲什麼不ü把一個suucess消息祝酒3秒鐘.... 否則如果u要顯示3秒的警告框首先去除OK按鈕則使用處理程序關閉警告框...

+0

,嗯謝謝,但多數民衆贊成不完全是我想要的。我正在顯示3000ms的進度對話框,之後我應該顯示此警報對話框(成功登錄!)。 – Randroid

2

wait方法是java.lang.Object的一部分,並且導致調用線程等待,直到另一個線程調用此對象的notify()或notifyAll()方法,或者直到指定的超時過期。它不是用來實現像功能一樣的「睡眠」。

你可以開始一個AsyncTask(這將啓動後臺線程)。在doBackGround中,您可以將線程休眠3秒(不會阻塞UI),並且可以在doPostExecute中彈出對話框。

1

您可以使用AsyncTaskTimer來完成該操作。如果您使用AsyncTask,在後臺睡眠並顯示對話框onPostExecute

1

在這裏接受的答案應該給你一個良好的開端。只需用烤麪包片代替對話,就完成了。

How to display toast inside timer?

即使用一個定時器來創建一個新的線程來倒計時你3秒,並使用一個處理程序,在主UI線程上顯示的對話框或吐司消息。

1

創建您的活動的類Handler(可分配局部變量)。然後設置它發送一個sendEmptyMessageDelayed()OnStart()。然後,在您的處理程序中,創建alert dialog
請注意,,由於活動可以隨時由Android終止,因此您還需要在活動中覆蓋OnStop(),並在您的處理程序上調用removeMessages()

如果您不這樣做,則消息將保留在隊列中,但當事件觸發時,您的Activitiy將已被終止。結果是一個相當混亂的Exception

該方法還具有能夠首先終止發射的消息的益處。例如,如果你完成了之前需要完成的任何事情,你可以簡單地刪除message from the queue,它不會觸發。