2014-02-06 64 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();