Java 如何避免在用户触摸屏幕时关闭“我的进度”对话框?
我正在做一个android项目,当用户下载一个文件时,它会显示一个进度对话框 但当用户触摸屏幕时,进度对话框将被取消,而不等待100%。 我已经试过使用这个:Java 如何避免在用户触摸屏幕时关闭“我的进度”对话框?,java,android,Java,Android,我正在做一个android项目,当用户下载一个文件时,它会显示一个进度对话框 但当用户触摸屏幕时,进度对话框将被取消,而不等待100%。 我已经试过使用这个: public boolean onTouchEvent(MotionEvent e) { return true; } 但它不起作用 我怎样才能避免这种情况 更新1: 似乎setCancelable(false)可以正常工作。非常感谢您的回答,但当下载持续时间较长且用户决定放弃时,这将是不可能的,因为我已经停
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)
仅防止用户在单击屏幕上其他任何位置时取消对话框,前者还防止用户在单击后退按钮时取消对话框。因此,您不需要同时声明这两种方法。请在代码中添加一些解释-该方法的作用是什么,为什么要使用它?