2014-11-21 70 views
0

以下是我的AlertDialog的代码,取消AlertDialog在活动的onPause方法在Android的

AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext); 
alertDialog.setTitle("GPS settings"); 
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); 
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int which) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     mContext.startActivity(intent); 
     } 
}); 

alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
     } 
    }); 
alertDialog.show(); 

@Override 
protected void onPause() { 
    super.onPause(); 
// I want dialog to be dismissed here 

} 

其工作正常,但我想要的是关闭该对话框中的活动的onPause方法,
我如何能实现它呢?

+1

使用dialog.dismiss()函数... – 2014-11-21 06:34:03

回答

1

使用这

alertDialogforGPS.dismiss(); 

编辑:

AlertDialog.Builder builder; 

builder = new AlertDialog.Builder(WelcomeActivity.this).setTitle("Title") 
.setMessage("Message") 
.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog,int which) { 
     //your code 
    } 
}) 
.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 
AlertDialog dialog = builder.create(); 
dialog.show(); 

而且在

dialog.dismiss(); 
+0

alertDialog.dismiss();不可用 – 2014-11-21 06:49:25

+0

@RajeshSuthar是你的'alertDialog'对象全局? – SilentKiller 2014-11-21 06:51:30

+0

@SilentKiller:是全球性的 – 2014-11-21 07:00:00

0

试试这个..

声明全局变量..

AlertDialog.Builder alertDialog; 

定义和访问它时,你需要它。

alertDialog = new AlertDialog.Builder(mContext); 
alertDialog.setTitle("GPS settings"); 
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); 
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int which) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     dialog.dismiss(); // NOTE : dismiss dialog before moving to other activity.. it will prevent causing exception... 
     mContext.startActivity(intent); 
     } 
}); 

alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
     } 
    }); 

的其他方法来访问变量..

@Override 
protected void onPause(){ 
    //checking for null variable 
    if(alertDialog != null) 
     alertDialog.dismiss(); 
    } 
} 
+0

我希望它只是在方法的onPause然后 – 2014-11-21 06:44:42

+1

做公共变量..这样你们可以在onPause访问它()方法太 – 2014-11-21 12:17:27

+0

确保看法是'showing':'如果(this.alertDialog = NULL && this.alertDialog! .isShowing())'。 – 2015-06-07 23:35:38

0

首先,你必须使你的AlertDialog.Builder alertDialog类的成员。像:

private AlertDialog.Builder mAlertDialog; 

然后,在这里您定义警告对话框的时候,你用这个成员:

mAlertDialog = new AlertDialog.Builder(mContext); 
mAlertDialog.setTitle("GPS settings"); 
mAlertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); 
mAlertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog,int which) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     mContext.startActivity(intent); 
    } 
}); 

mAlertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 
mAlertDialog.show(); 

然后在onPause()方法,您可以关闭该对话框。

@Override 
protected void onPause() { 
    if (mAlertDialog != null) { 
     mAlertDialog.dismiss(); 
    } 
    super.onPause(); 
}