有没有办法确定是否可以调用dialog.dismiss()而不使用空的try-catch块?

TN.*_*TN. 5 java architecture api android scala

我越来越知名了java.lang.IllegalArgumentException: View not attached to window manager.目前已知的解决方案是使用空的try-catch块忽略错误.但它是否有一个更程序员友好的解决方案?例如

if (dialog.isAttached())
  dialog.dismiss();
Run Code Online (Sandbox Code Playgroud)

当然,如果Android SDK有一个没有失败的功能会更好(因为如果无法避免它,API为什么会失败?):

dialog.tryDismiss();
Run Code Online (Sandbox Code Playgroud)

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

Han*_*nry 0

您可以使用:

if (dialog != null && dialog.isShowing())dialog.dismiss();
Run Code Online (Sandbox Code Playgroud)

最好在活动消失/关闭之前关闭对话框...这意味着在 onPause() 和 onDestroy() 事件中也是如此..