当用户触摸屏幕时如何避免关闭我的进度对话框?

时间:2013-03-15 12:28:18

标签: java android

我正在开发一个Android项目,当用户下载文件时会显示进度对话框。

但是当用户触摸屏幕时,进度对话框将被取消而不等待100%。 我已经尝试过这个:

 public boolean onTouchEvent(MotionEvent e) {
        return true;
    } 

但它不起作用。

我该如何避免这种情况?

更新1:

似乎setCancelable(false)工作正常。非常感谢你的答案,但是当下载持久且用户决定放弃它时,这将是不可能的,因为我已经停用了后面的keyCode:

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

我怎么能弄清楚这一点?

6 个答案:

答案 0 :(得分:104)

使用dialog.setCancelable(false);

示例:

        ProgressDialog dialog = new ProgressDialog(WiFiFinderActivity.this);
        dialog.setMessage("please wait...");
        dialog.show();
        dialog.setCancelable(false);
        dialog.setCanceledOnTouchOutside(false);

答案 1 :(得分:11)

你不想使用这个覆盖功能..你只需设置

final Dialog dialog=new Dialog(dialogactivity.this);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);

答案 2 :(得分:4)

您可以使用此行

dialog.setCanceledOnTouchOutside(false);

dialog.setCancelable(false);

根据您的要求

答案 3 :(得分:1)

试试myDialog.setCancelable(false);。我不确定Progress Dialog是否有与AertDialog相同的方法,但是值得一试。

编辑(添加更新):尝试使用以下内容:

myDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            //do your canceling stuff here
        }
    });

您是在AlertDialog中执行此操作还是使用AlertDialog.Builder?

如果您使用的是AlertDialog.Builder,则应使用以下内容:

AlertDialog myProgressDialog = myDialog.create();
myProgressDialog.show();

然后你应该能够在你的NegativeButton onClick中使用myProgressDialog.dismiss();

答案 4 :(得分:0)

将此方法添加到进度对话框中:

progressDialog.setCanceledOnTouchOutside(false);

答案 5 :(得分:0)

在进度对话框中使用此方法: 这段代码可以正常工作。

 progressDialog.setCanceledOnTouchOutside(false);