[英]Android-How to close progress dialog when back button is pressed
按下后退按钮时如何关闭进度对话框?
一个更好的方法。
ProgressDialog dialog = new ProgressDialog(this);
dialog.setCancelable(true);
dialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialog){
/****cleanup code****/
}});
setCancelable
方法告诉ProgressDialog在按下后退按钮时关闭。 最后的监听器允许您执行因取消而需要执行的任何操作(如关闭套接字)。
我发现我的方法更有用。 如果设置progressDialog.setCancelable(true); 如果用户按下对话框外屏幕上的任何位置,它将取消对话框。 你不会想要的,对吗? 如果只想在用户按下后退按钮时取消进度对话框,请使用以下代码:
ProgressDialog pDialog;
pDialog = new ProgressDialog(MainActivity.this) {
@Override
public void onBackPressed() {
pDialog.dismiss();
}};
pDialog.setMessage("Loading");
pDialog.setCancelable(false);
pDialog.show();
这是解决方案。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.dismiss();
return true;
}
return super.onKeyDown(keyCode, event);
}
或者你也可以在onPause活动方法中解除对话。
老实说我会这样做:
Dialog接口提供了一个dialog.setCanceledOnTouchOutside(false)方法,可以精确地实现这一点。 您使用false值调用该值,用户将无法按返回按钮返回您的活动
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
。
如果单击back button
,默认情况下, progress dialog
被dismiss
。 或者,您可以添加以下行:
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;
}
});
或者,在back key
按下button event
override
方法onCancel()
方法。
ProgressDialog dialog = new ProgressDialog(yourActivity.this);
dialog.setCancelable(true);
.
.
.
progressDialog.show();
希望,这会奏效。
只需复制以下代码并在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();
}
这是一个可能的解决方案:
Dialog dialog;
dialog = new Dialog(context,style);
dialog.setCanceledOnTouchOutside(false);
您可以在onPause活动方法中关闭对话框。 这是解决方案。 它适用于我。
@Override
public void onPause() {
super.onPause();
progressDialog.dismiss();
}
确保private ProgressDialog progressDialog;
全球宣布
并在onCreate
方法上初始化progressDialog
,如下所示:
progressDialog = new ProgressDialog(YourActivityGoesHere.this);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.