Как проверить, открыто или нет диалоговое окно?
У меня есть статический метод, в котором я создаю диалог
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();
}
В моем приложении может возникнуть ситуация, когда метод можно вызывать несколько раз, но я не хочу открывать два или более диалоговых окна. Как проверить, открыто или нет диалоговое окно? Спасибо...
Ответы
Ответ 1
Вы должны поместить этот код в каждое действие, которое вы хотите поддержать этой функцией.
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();
}
Ответ 2
Перепишите свой метод для возврата AlertDialog
, назначьте его члену и проверьте перед вызовом этого метода, если он равен null или !isShowing()
.
Вместо этого вы можете использовать onCreateDialog
. Внесите этот метод в базовый класс для ваших действий, которые нуждаются в управлении диалоговым окном, а затем вызовите showDialog(int id)
везде, где вы хотите.
Ответ 3
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();