2014-02-06 92 views
1

我設法顯示ProgressDialog,但在長時間運行過程後無法關閉它。 有沒有人知道這裏有什麼問題。ProgressDialog未關閉

所有方法直接在我的Activity的onCreate()之下。

這是我的代碼片段。

private final Handler updateHandler = new Handler() { 
     public void handleMessage(final Message msg) { 
     dismissWaitDialog(); 

    }; 


    public void showWaitDialog(String sTitle, String sMessage){ 
     waitDialog=new ProgressDialog(this); 
     waitDialog.show(this, sTitle, sMessage); 
    } 

    public void dismissWaitDialog(){ 
     waitDialog.dismiss(); 
    } 


public void longrunner(){ 
    showWaitDialog("Please wait","Please wait"); 

    new Thread() { 
     public void run() { 
      do something long 
      updateHandler .sendMessage(mymessageinit); 
     } 
    }.start(); 
} 
+0

改爲使用AsyncTask ..順便說一句,你得到的異常 –

+0

沒有錯誤。只是不關閉對話框。所有運行進一步。 –

+0

後退按鈕被按下時關閉 – Balu

回答

2

您正在使用一個靜態show()方法返回的ProgressDialog一個實例,你扔掉。你忽略的對話與顯示的不一樣。要解決,變化:

waitDialog=new ProgressDialog(this); 
waitDialog.show(this, sTitle, sMessage); 

waitDialog = ProgressDialog.show(this, sTitle, sMessage); 

正如其他人提到的,AsyncTask真的執行,而不是與Thread小號直接合作這樣操作的正規途徑。

+0

Yupee!非常感謝 。現在工作! –

2

使用asyncTask。

完成後添加你的代碼doinbackground();

顯示對話框中preexecute();

開除進度對話框你doinbackground();