2017-05-29 7 views
1

progressdialogの新しいアクティビティを開く方法dimiss?ProgressDialog open新しいアクティビティを閉じる

  @Override 
     public void onClick(View v) { 
      progressDoalog = new ProgressDialog(Hack.this); 
      progressDoalog.setMax(100); 
      progressDoalog.setMessage("Its loading...."); 
      progressDoalog.setTitle("ProgressDialog bar example"); 
      progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
      progressDoalog.show(); 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         while (progressDoalog.getProgress() <= progressDoalog 
           .getMax()) { 
          Thread.sleep(200); 
          handle.sendMessage(handle.obtainMessage()); 
          if (progressDoalog.getProgress() == progressDoalog 
            .getMax()) { 
           progressDoalog.dismiss(); 
          } 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }).start(); 
     } 

     Handler handle = new Handler() { 
      @Override 
      public void handleMessage(Message msg) { 
       super.handleMessage(msg); 
       progressDoalog.incrementProgressBy(1); 
      } 
     }; 
    }); 
} 

は私に人を助けてください:

は、ここに私のコードの一部です。私はこれが進捗ダイアログが完了した後で活動を開くための1つの解決策だと思う。

+0

Androidのダイアログが却下されたとき[イベントを発射できるのが重複する可能性の下をご参照ください?](https://stackoverflow.com/questions/6203720/can-you-fire-an-event-when-android-dialog-is-dismissed) – EKN

答えて

1

ちょうど追加:

progressDoalog.setOnDismissListener(new DialogInterface.OnDismissListener(){ 
      @Override 
      public void onDismiss(DialogInterface dialog) { 
       //Launch your activity 
      } 
     }); 

は、それはあなたのダイアログでは、使用することができます

+0

私は試しました:https://pastebin.com/3WXrkEH4と私のアプリがクラッシュする –

+0

progressDoalog.setOnDismissListener()の前にnullチェックが必要です – EKN

+0

@EKN申し訳ありません、私は初心者です、どういう意味ですか?私の脚本にそれを見せてもらえますか? –

0

を閉じたときに呼び出され、単純なリスナーのAsyncTask

AsyncTaskでオーバーライドする3つの重要な方法があります。

  1. をdoInBackground:あなたのバックグラウンド処理の肉が発生する場所です。
  2. onPreExecute:ここにあなたのProgressDialog(ShowDialogを)を示し
  3. onPostExecute:あなたがあなたの活動の内部クラスとしてごAsyncTaskのサブクラスを作る場合は、ここであなたのProgressDialog(removeDialogまたはdismissDialog)

を隠し、 AsyncActivity内からフレームワークメソッドshowDialog、dismissDialog、およびremoveDialogを呼び出すことができます。

ここAsyncTaskのサンプル実装です:

class ProgressTask extends AsyncTask<String, Integer, Boolean> { 
    @Override 
    protected Boolean doInBackground(String... params) { 
    try { 
     Thread.sleep(4000); // Do your real work here 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    return Boolean.TRUE; // Return your real result here 
    } 
    @Override 
    protected void onPreExecute() { 
    showDialog(AUTHORIZING_DIALOG); 
    } 
    @Override 
    protected void onPostExecute(Boolean result) { 
    // result is the value returned from doInBackground 
    removeDialog(AUTHORIZING_DIALOG); 
    Intent i = new Intent(this, LandingActivity.class); 
    startActivity(i); 
    } 
} 
0

@MarkusMaleńkiコード

if(progressDoalog!=null && progressDoalog.isShowing()){ 
    progressDoalog.setOnDismissListener(new 
    DialogInterface.OnDismissListener(){ 
    @Override 
    public void onDismiss(DialogInterface dialog) { 
    //Launch your activity 
    } 
}); 

}

+0

私には予告があります。 isShowingはそのシンボルを解決できません –

+0

あなたはimport android.app.ProgressDialogを確認してください。あなたのクラスの – EKN

+0

私は私の答えでは、実際にはisShowing()は、私はisShowingに沿って関数のパラメータを追加することを忘れて、小規模な変更を行っている間違いの申し訳ありません。 – EKN

関連する問題