我正在开发一个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);
}
我怎么能弄清楚这一点?
答案 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);