我有静态方法,我在其中创建一个对话框
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个或更多对话框。如何检查是否打开了对话框?感谢...
答案 0 :(得分:32)
您应该将此代码放在要支持此功能的每个活动中。
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();
}
答案 1 :(得分:1)
重写您的方法以返回AlertDialog
,将其分配给成员并在调用此方法之前检查它是否为空或!isShowing()
。
您也可以使用onCreateDialog
代替。在基类中为需要对话框管理的活动实现此方法,然后在任何位置调用showDialog(int id)
。
答案 2 :(得分:0)
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();