2015-11-19 24 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開始顯示,然後只是當下載數據完成後消失,並傳遞到下一個活動。 –

相關問題