簡體   English   中英

Android-按下后退按鈕時如何關閉進度對話框

[英]Android-How to close progress dialog when back button is pressed

按下后退按鈕時如何關閉進度對話框?

一個更好的方法。

          ProgressDialog dialog = new ProgressDialog(this);
          dialog.setCancelable(true);
          dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
             @Override
             public void onCancel(DialogInterface dialog){
                /****cleanup code****/
          }});           

setCancelable方法告訴ProgressDialog在按下后退按鈕時關閉。 最后的監聽器允許您執行因取消而需要執行的任何操作(如關閉套接字)。

我發現我的方法更有用。 如果設置progressDialog.setCancelable(true); 如果用戶按下對話框外屏幕上的任何位置,它將取消對話框。 你不會想要的,對嗎? 如果只想在用戶按下后退按鈕時取消進度對話框,請使用以下代碼:

ProgressDialog pDialog;

pDialog = new ProgressDialog(MainActivity.this) {
             @Override
                public void onBackPressed() {
                    pDialog.dismiss();
                }};
        pDialog.setMessage("Loading");
         pDialog.setCancelable(false);

         pDialog.show(); 

這是解決方案。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
       dialog.dismiss();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

或者你也可以在onPause活動方法中解除對話。

老實說我會這樣做:

Dialog接口提供了一個dialog.setCanceledOnTouchOutside(false)方法,可以精確地實現這一點。 您使用false值調用該值,用戶將無法按返回按鈕返回您的活動

    ProgressDialog progressDialog = ProgressDialog.show(ActivityName.this, 
                                    "Title","Message");
    progressDialog.setCancelable(true);
    progressDialog.setOnCancelListener(new OnCancelListener() {

        @Override
        public void onCancel(DialogInterface dialog) {
            // TODO Auto-generated method stub
            // Do something...
        }
    });

按后退按鈕時,會調用onCancel

如果單擊back button ,默認情況下, progress dialogdismiss 或者,您可以添加以下行:

progress.setCancelable(true);

另一種選擇是你可以調用finish()然后調用progress.dismiss()

progress.setOnKeyListener(new ProgressDialog.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface arg0, int keyCode,
                KeyEvent event) {
            // TODO Auto-generated method stub
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                finish();
                dialog.dismiss();
            }
            return true;
        }
});

或者,在back key按下button event override方法onCancel()方法。

ProgressDialog dialog = new ProgressDialog(yourActivity.this);
dialog.setCancelable(true);
.
.
.
progressDialog.show();

希望,這會奏效。

只需復制以下代碼並在Async中粘貼即可。

ProgressDialog dialog;

@Override
protected void onPreExecute() {
    dialog = new ProgressDialog(MainActivity.this) {
        @Override
        public void onBackPressed() {
            dialog.cancel();
            dialog.dismiss();
        }
    };
    // dialog.setTitle("file is..");//its optional If u want set title in progress
    // bar
    dialog.setMessage("Loading....");
    dialog.setCancelable(false);
    dialog.show();
}

這是一個可能的解決方案:

Dialog dialog;
dialog = new Dialog(context,style);
dialog.setCanceledOnTouchOutside(false);

您可以在onPause活動方法中關閉對話框。 這是解決方案。 它適用於我。

@Override
    public void onPause() {
        super.onPause();
        progressDialog.dismiss();
    }

確保private ProgressDialog progressDialog; 全球宣布

並在onCreate方法上初始化progressDialog ,如下所示:

progressDialog = new ProgressDialog(YourActivityGoesHere.this);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM