Android 在反按时关闭活动和对话框
我有一个活动,它有一个带有Android 在反按时关闭活动和对话框,android,progressdialog,Android,Progressdialog,我有一个活动,它有一个带有可设置取消(false)的进度对话框 我想完成该活动,并关闭backPressed()上的progressdialog box 我已经实现了如下所示的onBackPressed(),但它不起作用 @Override public void onBackPressed() { if(pDialog.isShowing()){ pDialog.dismiss(); } this.finish(); super.onBackPr
可设置取消(false)
的进度对话框
我想完成该活动,并关闭backPressed()
上的progressdialog box
我已经实现了如下所示的onBackPressed()
,但它不起作用
@Override
public void onBackPressed() {
if(pDialog.isShowing()){
pDialog.dismiss();
}
this.finish();
super.onBackPressed();
}
进度对话框代码为
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setTitle("Connecting to Server");
pDialog.setMessage("Updating Assignee Detail. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
只需关闭
OnStop()中的对话框
restActivity
将finish()
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
if(progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
快乐编码 集
pDialog.setCancelable(true);
剩下的代码也可以。使用此方法,无需调用活动的finish:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if(null != pDialog)
pDialog.dismiss();
}
return super.onKeyDown(keyCode, event);
}
您可以通过以下两个步骤实现:
步骤1
改变
pDialog.setCancelable(false)
to
pDialog.setCancelable(true)
因为如果将对话框设置为false,则无法取消该对话框
步骤2
将一个侦听器添加到您的对话框
,以便在取消时,它将进行侦听,如下所示:
pDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// if from activity
finish();
}
});
对话框上的intead完成活动:
pDialog .setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
finish();
}
});
这是进度对话框的一个小示例,请关闭它并执行活动
选项1
创建进度对话框
ProgressDialog dialog = new ProgressDialog(this); //create progress dialog
dialog.setMessage("¡wait it, please...!"); //body text...
dialog.setCancelable(true); //if it will be cancelable
//this is the listener cancelable
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
finish();
}
});
dialog.show(); //show it...
ProgressDialog dialog = new ProgressDialog(this); //create progress dialog
dialog.setMessage("¡wait it, please...!"); //body text...
dialog.setCancelable(false); //if it will be cancelable
//this is the listener dismiss
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
if(validation){
dialogInterface.dismiss();
}else{
finish();
}
}
});
dialog.show(); //show it...
以某种威胁或任何你想要的方式完成它
dialog.dismiss();
背压
@Override
public void onBackPressed() {
if(dialog.isShowing()){
dialog.cancel();
}
finish();
}
@Override
public void onBackPressed() {
if(dialog.isShowing()){
validation=false;
dialog.dismiss();
}
finish();
}
选项2
创建一个全局变量
Boolean validation=false;
创建进度对话框
ProgressDialog dialog = new ProgressDialog(this); //create progress dialog
dialog.setMessage("¡wait it, please...!"); //body text...
dialog.setCancelable(true); //if it will be cancelable
//this is the listener cancelable
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
finish();
}
});
dialog.show(); //show it...
ProgressDialog dialog = new ProgressDialog(this); //create progress dialog
dialog.setMessage("¡wait it, please...!"); //body text...
dialog.setCancelable(false); //if it will be cancelable
//this is the listener dismiss
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
if(validation){
dialogInterface.dismiss();
}else{
finish();
}
}
});
dialog.show(); //show it...
完成它
//if finish process
validation=true;
dialog.dismiss();
或
背压
@Override
public void onBackPressed() {
if(dialog.isShowing()){
dialog.cancel();
}
finish();
}
@Override
public void onBackPressed() {
if(dialog.isShowing()){
validation=false;
dialog.dismiss();
}
finish();
}
为什么不能在onBackPressed方法中设置pDialog.setCancelable(true)。而finish
和onBackPressed
做同样的事情。删除此.finish();如果更改为setCancelable(true),会发生什么情况?那么你的代码行得通吗?发布你的progressdialog代码。@user57445:请看我的答案。测试成功了。