2011-11-02 85 views
1

中顯示後臺進度以顯示我使用的後臺進程ProgressDialogBox如何使用ProgressDialog在android

我的代碼

add_button.setOnClickListener(new OnClickListener() { 


     public void onClick(View viewParam) { 


      progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading..."); 

      new Thread() { 

      public void run() { 

      try{ 

      sleep(10000); 

      } catch (Exception e) { 

      Log.e("tag", e.getMessage()); 

      } 

      progressDialog.dismiss(); 
      } 

      }.start(); 

其工作的罰款。但問題是演示10000萬毫秒,因爲我希望它顯示,直到我的數據被提取/添加。我的意思是它應該取決於獲取/添加時間。

我認爲做那樣的

public void onClick(View viewParam) { 

progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading..."); 

Fetching data code here 

progressDialog.dismiss(); 
} 

但它力的工作,不顯示任何進度條。

我該如何使用它。

謝謝。

回答

0

嗯,你的代碼是正確的:

public void onClick(View viewParam) { 

    progressDialog = ProgressDialog.show(AddTicketActivity.this, "", "Loading..."); 

    // Fetching data code here 
    // ... 
    // Data Fetched 

    progressDialog.dismiss(); 
} 

這應該工作,只要你是在同一個線程讀取的代碼(儘管這可能導致ANR考慮使用AsyncTask)。

編輯:請注意,如果您在單獨的線程中獲取數據,根據您的邏輯,您將顯示您的進度對話框,然後立即關閉它。

0

我建議你用AsyncTaskProgressDialogProgressBar

  1. 在onPreExecute()方法,顯示進度或使其再次可見,如:progressbar.setVisibility(View.VISIBLE);
  2. 在doInBackground()方法,執行後臺任務
  3. 在onPostExecute()方法,只是隱藏進度使用progressbar.setVisibility(View.INVISIBLE);
2

這種進度條的方式是異步的。這可能對你有所幫助。

// class for displaying dialog box 
class DialogTask extends AsyncTask<Void, Void, String> { 

    protected String doInBackground(Void... urls) { 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 

     method to execute 
     super.onPostExecute(result); 
    } 
}