在测试以下步骤时,我的 DialogFragment 子类遇到了奇怪的、可能是特定于版本的行为:
(1) 打开对话框
(2) 使用 Home 键或Recent Apps 键离开应用程序
(3) 返回应用程序,对话框不再可见。它似乎在主要活动背后是短暂的、半透明的。
(4) 旋转设备,对话框重新出现。
此错误发生在我运行 Android 4.2.1 的 Asus TF700T 平板电脑上,而我运行 Android 4.1.2 的 Motorola Razr 手机(它有一个菜单键而不是溢出按钮)上不会出现此错误。此外,只有通过溢出菜单打开对话框时才会出现这种情况 - 通过 ActionBar 项打开的对话框不会出现此问题!最后,如果您在暂停活动之前更改方向,则不会出现此问题。
我发现了一个非常相似的问题,其中包括令人沮丧的评论,例如“这显然是一个 Android 错误”。有相关的错误报告。请说不是这样...
我对这个问题的解决方法是在 onResume() 中:我使用 findFragmentByTag 检查 FragmentManager 是否存在现有对话框;如果有任何不为空,我会解雇并重新展示它们。但我想了解这里到底发生了什么。