Android-按下后退按钮时如何关闭进度对话框

时间:2011-09-16 14:07:30

标签: android

按下后退按钮时如何关闭进度对话框?

10 个答案:

答案 0 :(得分:44)

更好的方式。

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

setCancelable方法告诉ProgressDialog在按下后退按钮时关闭。最后的监听器允许您执行因取消而需要执行的任何操作(如关闭套接字)。

答案 1 :(得分:5)

我发现我的方法更有用。如果设置progressDialog.setCancelable(true);如果用户按下对话框外屏幕上的任何位置,它将取消对话框。你不会想要的,对吗?如果只想在用户按下后退按钮时取消进度对话框,请使用以下代码:

ProgressDialog pDialog;

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

         pDialog.show(); 

答案 2 :(得分:4)

这是解决方案。

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

或者你也可以在onPause活动方法中解除对话。

答案 3 :(得分:3)

老实说我会这样做:

Dialog界面提供了 dialog.setCanceledOnTouchOutside(false) 方法,可以精确地启用此方法。您使用false值调用该值,用户将无法按返回按钮返回您的活动

答案 4 :(得分:1)

    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

答案 5 :(得分:1)

默认progress dialog获取dismiss,如果您点击back button。或者,您可以添加以下行:

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;
        }
});

或者,override中的onCancel()方法back key方法已按下button event

答案 6 :(得分:0)

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

希望,这会奏效。

答案 7 :(得分:0)

只需复制以下代码并在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();
}

答案 8 :(得分:0)

以下是一种可能的解决方案:

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

答案 9 :(得分:0)

您可以在onPause活动方法中关闭对话框。 这是解决方案。它适用于我。

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

确保全局声明private ProgressDialog progressDialog;

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

progressDialog = new ProgressDialog(YourActivityGoesHere.this);