2015-11-19 51 views
0

以下代码可以正常工作,但进度对话框未显示,我想在运行进程DownloadData()时显示它。当线程中的一个进程正在运行时,ProgressDialog未显示

这个活动不是唯一的,也不是主要的。

public class MyActivity extends Activity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      setContentView(R.layout.MyActivity); 
     } 

    public void Download(View view) { 

      final ProgressDialog dialog = new ProgressDialog(MyActivity.this); 

      dialog.setTitle("Processing..."); 
      dialog.setMessage("Please wait."); 
      dialog.setCancelable(false); 
      dialog.setIndeterminate(true); 
      dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      dialog.show(); 


      Thread background = new Thread(new Runnable() { 

       public void run() { 

        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 

          DownloadData(); 
          dialog.dismiss(); 
         } 

        }); 

       } 

      }); 

      background.start(); 

     } 

    } 
+1

因为你创建了你的'dialog'并显示它,但是在下一步你创建了'background'线程,它立即关闭你的'dialog'。此外,尝试使用'AcyncTask'而不是'Thread'。有处理这样的东西的方法 –

+0

线程不知道需要多少时间'DownloadData();'需要执行,所以它立即关闭,把你的代码从'DownloadData();'所以我们可以帮助 –

回答

2

您似乎在创建对话框后立即关闭对话框。如果你删除会发生什么?

dialog.dismiss(); 

你应该看看使用AsyncTask时,你下载的东西。在下载时显示进度对话框非常棒。 http://developer.android.com/reference/android/os/AsyncTask.html

+0

是的it''我的作品,我从线​​程中删除ProgressDialog,progressDialog开始显示,然后只是当下载数据完成后消失,并传递到下一个活动。 –