2011-12-20 16 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

進捗状況[ダイアログ](http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog)のAndroid開発ガイドをお読みになりましたか?また、このページの右側を見ると、この正確な問題には多くの疑問があります。 – Vladimir

+0

私はこれらすべてを見て、すべてスレッドと進行状況のダイアログボックスについて話しています。みんなスレッドの中でProgress Dialogを使ってコードを投稿しました。私が誰かがAsyncTaskなしで試してみたら、解決策を得るためにここに投稿しました。コメントありがとう。 –

+0

の可能な複製[アンドロイドの進行状況ダイアログを表示してから削除するにはどうすればいいですか](http://stackoverflow.com/questions/4388142/how-do-i-show-and-then-remove-an-android-progress-ダイアログ) –

答えて

1

だけinBackground()メソッドにコードを書いて、onUpdateProgressを(使用して進行状況を表示するためにAsychTaskクラスを使用)とonPostExecute()に却下ここ

がある例では、リンク

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

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

+0

小さな疑問は、AsyncTaskなしで可能ですか? –

+0

あなたのケースでは可能ですが、進捗ダイアログが表示され、それが却下される前に画面に表示されるので、あなたの仕事は非常にうまくいっていますが、進捗ダイアログを表示するのに何時間もかかることはありません – Pratik

+0

私の質問私は 'dismiss()'を呼び出す前に無限のループを置いています。私はAsyncTaskで試してみるよ。とにかくコメントと答えをありがとう。 –

1

このために、AsyncTasksが設計されています。ボタンがクリックされたときにasyncTaskを開始し、asyncTaskのpreExecuteでダイアログを表示し、asyncTaskのPostExecute()でダイアログを閉じます。 background()メソッドで時間がかかるアクティビティを実行します。

+0

はyashwanthに同意します... – Richa

関連する問題