2011-09-09 43 views
1

私はAndroidプログラミングには全く新しいので、愚かな質問のために私を失礼にしてください>、< タイトルと同じように、私はAlertDialog/Toastを表示したいProgressDialogが終了します。どのように私はこれを適切な方法で行うことができますか?注:ハンドラは、ProgressDialog(pd.dismissDialog())を閉じるだけです。もっと混乱して何Android - ProgressDialogが終了した直後にAlertDialog/Toastを表示

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.btnDoRegister: 
    pd = ProgressDialog.show(RegisterActivity.this, "", 
        "Registering with the server.."); 
      new Thread() { 
       public void run() { 
        Looper.prepare(); 
        //(hopefully) thread-safe implementations here 
        handler.sendEmptyMessage(0); 
       } 
      }.start(); 
      if (status == registered) { 
       //show AlertDialog/Toast here 
       finish(); 
      } else if (status == notRegistered) { 
       //show AlertDialog/Toast here 
      } 
    break; 
    } 

は、私はこれをデバッグしようとしたとき、LogCatは何も示していないし、すべてが完璧に動作していた(警告/トーストが予想されるとして表示)、です。しかし、私はそれを正常に実行しようとすると、何とか私はこれが速すぎると私のアラート/トースト正しく表示されていない(愚かな音)感じる。ご助力ありがとうございます。

+0

k、どのスレッドで進行状況ダイアログが消えますか?その係数を表示するだけです。 – user370305

答えて

1

+0

あなたは正しいです。スレッドのハンドラ内でAlertDialog/Toastを呼び出した後は、正常に動作します!大変ありがとうございました:) –

0

これは、実行したスレッドがすぐに作業を終了するためです。しかし、他の手続き型言語のようにデバッグすると、順番に物事を順番に実行します。しかし、あなたはまだそれが長い時間のためのダイアログを表示したい場合は、この操作を行う(ただし、その実用的な使用の)ハンドラののhandleMessageメソッドでAlertDialog /トーストを表示するために、より適しているであろう

new Thread() { 
       public void run() { 
        Looper.prepare(); 
        //(hopefully) thread-safe implementations here 
        handler.sendEmptyMessage(0); 
        Thread.sleep(3000); 
       } 
      }.start(); 
関連する問題