发现是否有任何Dialog正在打开?

时间:2011-09-20 14:20:38

标签: android android-dialog

我有一个BaseActivity在它的代码上打开Dialogs,但我不能改变这个类代码,所以我在我的子类上扩展它,如何知道Dialog何时打开?

2 个答案:

答案 0 :(得分:1)

您可以尝试覆盖onCreateDialog()。这会传递Activity调用showDialog(id)时使用的引用ID。如果你只是需要知道是否会显示任何Dialog,那么我想你可以调用super来返回将显示的对话框。

@Override
protected Dialog onCreateDialog(int id){
   Dialog dialogToBeShown = super.onCreateDialog(id);
   if(dialogToBeShown != null){
      ***Do whatever you have to with the dialog***
   }
   return dialogToBeShown;
}

修改

这仅在第一次创建对话框时才有效。您可以使用onPrepareDialog(int id, Dialog dialog, Bundle args)执行类似操作,在打开对话框时始终会调用它。

答案 1 :(得分:0)

Dialog有一个isShowing()方法,如果对话框当前可见,则该方法应该返回。因此,您可以使用它来查看是否显示对话框并使用dismissDialog()隐藏它。您只需要保留对在onCreateDialog()中创建的对话框的引用。