繁体   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