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

Java 如何避免在用户触摸屏幕时关闭“我的进度”对话框?,java,android,Java,Android,我正在做一个android项目,当用户下载一个文件时,它会显示一个进度对话框 但当用户触摸屏幕时,进度对话框将被取消,而不等待100%。 我已经试过使用这个: public boolean onTouchEvent(MotionEvent e) { return true; } 但它不起作用 我怎样才能避免这种情况 更新1: 似乎setCancelable(false)可以正常工作。非常感谢您的回答,但当下载持续时间较长且用户决定放弃时,这将是不可能的,因为我已经停

我正在做一个android项目,当用户下载一个文件时,它会显示一个进度对话框

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

 public boolean onTouchEvent(MotionEvent e) {
        return true;
    } 
但它不起作用

我怎样才能避免这种情况

更新1:

似乎setCancelable(false)可以正常工作。非常感谢您的回答,但当下载持续时间较长且用户决定放弃时,这将是不可能的,因为我已经停用了back keyCode:

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

我该如何解决这个问题呢?

使用
dialog.setCancelable(false)

例如:

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

尝试
myDialog.setCancelable(false)。我不确定进度对话框是否具有与AertDialog相同的方法,但它可能值得一试

编辑(为更新添加):尝试使用以下命令:

myDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            //do your canceling stuff here
        }
    });
AlertDialog myProgressDialog = myDialog.create();
myProgressDialog.show();
您是在AlertDialog中执行此操作,还是在使用AlertDialog.Builder

如果使用的是AlertDialog.Builder,则应使用以下命令:

myDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            //do your canceling stuff here
        }
    });
AlertDialog myProgressDialog = myDialog.create();
myProgressDialog.show();
然后您应该能够使用
myProgressDialog.disease()

你可以用这条线

dialog.setCanceledOnTouchOutside(false);


根据您的要求,您不想使用此覆盖功能。。你刚开始

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

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

progressDialog.setCanceledOnTouchOutside(false);

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

 progressDialog.setCanceledOnTouchOutside(false);

你在使用AlertDialog吗?你确定吗?你能给我们看一些代码吗?你试过setCancelable吗?@zim my edit可能有助于你的更新。
dialog.setCancelable(false)已足够。而
dialog.setCanceledOnTouchOutside(false)
仅防止用户在单击屏幕上其他任何位置时取消对话框,前者还防止用户在单击后退按钮时取消对话框。因此,您不需要同时声明这两种方法。请在代码中添加一些解释-该方法的作用是什么,为什么要使用它?