按下后退按钮时如何关闭进度对话框?
答案 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);