Java 是否有一种方法可以确定是否可以在没有空的try-catch块的情况下调用dialog.dismise()?

Java 是否有一种方法可以确定是否可以在没有空的try-catch块的情况下调用dialog.dismise()?,java,android,api,scala,architecture,Java,Android,Api,Scala,Architecture,我得到了众所周知的java.lang.IllegalArgumentException:视图未附加到窗口管理器。当前的方法是使用空的try-catch块忽略错误。但是否有一个更为程序员友好的解决方案?例如 if (dialog.isAttached()) dialog.dismiss(); 当然,如果Android SDK有一个不失败的功能,那就更好了(因为如果无法避免API失败,为什么API会失败??) 还是说空的try-catch块在架构上是合理的?或者它只是一个坏的或不完整的API的

我得到了众所周知的
java.lang.IllegalArgumentException:视图未附加到窗口管理器
。当前的方法是使用空的try-catch块忽略错误。但是否有一个更为程序员友好的解决方案?例如

if (dialog.isAttached())
  dialog.dismiss();
当然,如果Android SDK有一个不失败的功能,那就更好了(因为如果无法避免API失败,为什么API会失败??)

还是说空的try-catch块在架构上是合理的?或者它只是一个坏的或不完整的API的解决方法?

您可以使用:

if (dialog != null && dialog.isShowing())dialog.dismiss();
最好在“活动”消失/关闭之前关闭对话框,这意味着在onPause()和onDestroy()事件中,我总是使用:

if(dialog != null && dialog.isShowing())
  dialog.dismiss();

如果在显示对话框(这是一个进度对话框)和操作完成(对话框将被取消)期间,当活动不再可见时,单击“主页”按钮,则不起作用。对不起,我只是尝试了您在我的应用程序中所说的(上传一张图片,当对话框显示时,按下home按钮,等待操作完成(显示一条toast消息)。没有任何异常。嗯,奇怪。同样的事情给了我Android 2.3.6上的异常。
if(dialog != null && dialog.isShowing())
  dialog.dismiss();