【发布时间】:2013-05-30 17:07:46
【问题描述】:
我需要在 FragmentActivity 的 onStop() 中关闭 DialogFragment 如果它正在显示,这就是我所做的
if(mAlertDlg != null && mAlertDlg.getDialog() != null)
mAlertDlg.dismiss();
但我通常会得到 IllegalStateException。所以请告诉我为什么该代码是错误的,以及在 onStop() 中关闭 DialogFragment 的正确方法是什么?谢谢。
【问题讨论】:
-
有关此主题的更多信息,请参阅blog post。一般来说,您不想使用
*****AllowingStateLoss()方法来解决此类问题。IllegalStateException被抛出,因为会发生状态丢失。使用这些方法只是为了避免异常......但状态丢失仍然可能导致您的应用程序出现错误。 -
感谢您的精彩文章,但在我的场景中,当 Activity 不再处于前台时,我仍然可以找到比使用 *AllowingStateLoss() 方法关闭对话框更好的方法。在 onPause() 和 onStop() 上不能 dismiss() 怎么办?
-
当 Activity 进入后台和/或完成时,FragmentManager 将自动关闭对话框。我不明白为什么有必要在 onStop() 中关闭对话框...到那时,FragmentManager 已经保存了其 Fragments 的状态并将其全部记录为 Activity 状态的一部分,因此关闭调用将有没有效果。无论哪种方式,对话框和片段都不能跨多个 Activity 实例持续存在......一旦 Activity 停止/销毁,它们将从 Activity 的窗口中删除。
标签: android android-dialogfragment dialogfragment