2011-08-24 59 views
0

我在我的活動中啓動一個線程,並立即顯示進度對話框。完成任務後,此線程中的方法調用其他線程調用m_progressDialog.dismiss();方法。更新android中的進度條

這工作正常,但我想現在實施進度欄如何根據完成任務在上一個線程填充此欄。它需要無限期的時間來完成其操作。

這聽起來似乎有些含糊,但如果需要,iam準備進一步闡述它。

小的代碼片段:在第一線

方法結束這樣

... 
runOnUiThread(m_returnRes); 
} 

private Runnable m_returnRes = new Runnable() { 

    public void run() { 
     m_progressDialog.dismiss(); 

而且我一直試圖做這樣

m_progressDialog = new ProgressDialog(this); 
     m_progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     m_progressDialog.setProgress(0); 
     m_progressDialog.setMax(100); 
     m_progressDialog.setMessage("Retrieving data.."); 
     m_progressDialog.show(); 

    Thread background = new Thread(new Runnable() { 

     public void run() { 
      // TODO Auto-generated method stub 

      try {while(m_progressDialog.getProgress()<=100){ 
       Thread.sleep(500);} 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 


     } 
    }); 

    background.start(); 

但酒吧沒有得到填充並在調用.dismiss()方法後直接解散

回答

3

嘗試使用AsyncTask。它處理自身的線程並在onProgressUpdate內部具有函數publishprogress來更改視圖內容,在那裏可以更新進度條。

+0

我會探討關於Asynctask和c如果可能的話 – TechnocraT

+0

你們看看這個問題...我編輯過它並添加了更多的代碼段 – TechnocraT

+0

.dismiss()用於解除progressdialog。嘗試使用[.setProgress()](http://developer.android.com/reference/android/app/ProgressDialog.html#setProgress%28int%29) –