Android 如何检查对话框是否打开?
我有一个创建对话框的静态方法Android 如何检查对话框是否打开?,android,Android,我有一个创建对话框的静态方法 public static void showDialog(Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Title"); builder.setMessage("Message"); builder.setPositiveButton("ok", new OnClickListe
public static void showDialog(Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Title");
builder.setMessage("Message");
builder.setPositiveButton("ok", new OnClickListener() {
public void onClick(DialogInterface dialog, int arg1) {
dialog.dismiss();
}});
builder.setCancelable(false);
builder.create().show();
}
在我的应用程序中,可能会出现方法可以多次调用的情况,但我不想打开2个或更多对话框。如何检查对话框是否打开?谢谢…重写您的方法以返回
AlertDialog
,将其分配给一个成员,并在调用此方法之前检查它是否为null或!isShowing()
您也可以改用
onCreateDialog
。在基类中为需要对话框管理的活动实现此方法,然后在任何需要的地方调用showDialog(int-id)
。您应该将此代码放在要支持此功能的每个活动中
public AlertDialog myAlertDialog;
public void showDialog(Context context) {
if( myAlertDialog != null && myAlertDialog.isShowing() ) return;
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Title");
builder.setMessage("Message");
builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int arg1) {
dialog.dismiss();
}});
builder.setCancelable(false);
myAlertDialog = builder.create();
myAlertDialog.show();
}
此方法不会多次运行同一对话框?如果您不检查
null
和isShowing
是否为空,它将尝试多次运行此对话框。如果您将此
表示活动
作为上下文传递,则此方法将不适用于不同的活动。当第二个活动调用此方法时,上下文将过期(第一个活动
)。@user639183您是对的。最好将其放在activity类中,使其不是静态的。对我来说,这可以工作…在我的应用程序中,只有一个activity可以多次调用此方法。但我不喜欢与静态成员一起工作……这样安全吗?我应该杀死这个成员吗?如果(myAlertDialog==null…为什么我们要检查null?这里应该是!=null…否?0\u 0如果你只有1个活动,为什么要使这个方法是静态的?你应该像public void showDialog()
一样将这个
传递给构建器你可以从顶部的函数动态传递title,msg!
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(title);
alertDialog.setMessage(msg);
alertDialog.setButton(-3, "Text Parsed", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});
alertDialog.show();