2011-12-20 108 views
0

我在我的應用程序中使用了下面的代碼。單擊按鈕時顯示進度對話框

Button button = new Button(this); 
    button.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        ProgressDialog pd = new ProgressDialog(v.getContext()); 
        pd.setTitle("Please wait......."); 
        pd.show(); 
        // some task which will take minimum 2 or 3 seconds 
        // e.g. parsing XML file 
        pd.dismiss(); 
       } 
      }); 

我認爲根據上面的代碼,當我點擊按鈕進度對話框必須顯示在屏幕上,但它不顯示。爲什麼我不知道。

但是,如果我刪除pd.dismiss()它的顯示,那也僅在按鈕釋放後。

如果我把任何無限循環代替我的任務也,其不顯示進度對話框

我的代碼是否正確?如果有人知道我的要求的解決方案,請回復此郵件。

謝謝。

+0

你有沒有讀過android開發指南[對話](http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog)?另外,如果你看看這個頁面的右側,那麼這個確切的問題有很多問題。 – Vladimir 2011-12-20 08:19:50

+0

我看到了所有這些,都在談論線程和進度對話框。每個人都在線程中發佈帶進度對話框的代碼。如果有人在沒有AsyncTask的情況下嘗試,我會在這裏發佈以獲得解決方案。感謝評論。 – 2011-12-20 08:26:35

+0

可能的重複[如何顯示,然後刪除Android進度對話框](http://stackoverflow.com/questions/4388142/how-do-i-show-and-then-remove-an-android-progress-對話) – 2011-12-21 02:40:51

回答

1

使用AsychTask類只寫你的代碼到inBackground()方法,並顯示使用onUpdateProgress(進度)和解僱onPostExecute()

這裏是示例鏈接

http://developer.android.com/reference/android/os/AsyncTask.html

http://www.vogella.de/articles/AndroidPerformance/article.html

+0

小疑問,沒有AsyncTask可能嗎? – 2011-12-20 08:21:43

+0

在你的情況下是可能的,但是當進度對話框被顯示時它會發生什麼,並且在它被解僱之前它出現在屏幕上,所以你的任務執行的很好,但是出現進度對話框沒有那麼多時間 – Pratik 2011-12-20 08:24:06

+0

我在我的問題中提到**在調用'dismiss()'屏幕上沒有進度對話框之前,我還把**無限循環。好的,我會嘗試使用AsyncTask。無論如何感謝評論和答覆。 – 2011-12-20 08:30:05

1

AsyncTasks是爲此目的而設計的。單擊按鈕時啓動asyncTask,並在asyncTask的preExecute中顯示對話框,並在AsyncTask的PostExecute()上關閉該對話框。在background()方法中執行需要花費時間的活動。

+0

同意yashwanth ... – Richa 2011-12-20 09:13:42