2012-02-25 41 views
7

次のサンプルコードを確認してください。トーストメッセージは表示されますが、進行状況ダイアログは表示されません。どうして?ProgressDialog.dismiss()が機能していません

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.widget.Toast; 


public class LoadExamActivity extends Activity implements Runnable{ 
    ProgressDialog pd; 

    Handler Finished = new Handler(){ 
     @Override 
     public void handleMessage(Message msg){ 
      Toast.makeText(getApplicationContext(), "DONE!", Toast.LENGTH_SHORT).show(); 
      pd.dismiss(); 
     } 
    }; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.exam); 
     Toast.makeText(this, "START!", Toast.LENGTH_SHORT).show(); 
     pd = new ProgressDialog(this); 
     pd.show(this, "Waiting...", "Please wait five seconds..."); 
     Thread th = new Thread(this); 
     th.start(); 


    } 

    public void run() { 
     //To change body of implemented methods use File | Settings | File Templates. 
     for (int i = 0; i < 5; i++) 
     { 
      try 
      { 
       Thread.sleep(1000); 
      }catch(Exception e){} 
     } 
     Finished.sendEmptyMessage(0); 
    } 


} 

5秒後、私はどちらかprogressdialogを消す習慣と私ドン)(「DONE」のメッセージが表示されますがprogressdialogが却下されていないと私は右THR pd.showの下pd.dismiss()を入れても、なぜこのことが起こっているのか分かりません。それが私を狂わせてしまいます!

答えて

23

右の進捗ダイアログを使用していません。あなたのpd.show(...)行の隣に、ちょっとした警告記号が表示されます。何をやっている

  1. あるnew ProgressDialog()

  2. 保存せずに、pd.Show()を用いて所望のテキストでダイアログ進捗を作成を使用して(、目に見えない無関係)進捗ダイアログを作成します。それを参照してください。

  3. 最初のダイアログを閉じます。 (2)のダイアログはそのままです。あなたとあなたのコードを交換した場合

//pd = new ProgressDialog(this); 
pd = ProgressDialog.show(this, "Waiting...", "Please wait five seconds..."); 

それがうまく実行する必要があります。

+0

働いています!あなたは警告について正しいと私はそれに気付かなかった。しかし、私はなぜIDEが私に言っているのか理解できません.show()メソッドは何も返さない(void)、そして結局ProgressDialogのインスタンスを返しますか? – Davidoff

+0

はい、これは動作します。 show()はProgressDialogのインスタンスを返しますが、newキーワードを使用しても同じインスタンスが取得されます。一方、上記の方法を使用すると、解読コードが機能し、一方、新しいキーワードを使用すると、コードは機能しませんでした。 – Khushboo

+0

大きな説明をありがとうございます。 – suku

関連する問題