【发布时间】:2014-10-29 14:14:54
【问题描述】:
有很多问题都在讨论 DialogFragment 在设备旋转时消失的问题。但我有一个相反的。我必须旋转设备才能强制显示对话框。
我正在使用 android-support-v4.jar 库。
我有 MainActivity (android.support.v4.app.FragmentActivity) 和 AccountsFragment (android.support.v4.app.Fragment)。
通过菜单项,用户触发显示 SettingsDialogFragment (android.support.v4.app.DialogFragment)。
SettingsDialogFragment 在 MainActivity 中显示,使用:
android.support.v4.app.DialogFragment.show(FragmentManager manager, String tag)
FragmentManager 是通过 MainActivity 获取的:
android.support.v4.app.FragmentActivity.getSupportFragmentManager()
用户单击 SettingsDialogFragment 上的按钮,触发显示 PasslockSetupActivity (android.support.v4.app.FragmentActivity)。
用户完成密码锁设置,我们调用 PasslockSetupActivity.finish()。
预期结果:用户应该看到 SettingsDialogFragment 而不是 MainActivity 和 AccountsFragment。 实际结果:用户看到 MainActivity 和 AccountsFragment(没有对话框!)
观察:
- 如果在设备上启用了“不保留活动”开发者选项,则它会按预期工作。
- 如果用户旋转设备,则会出现对话框!
这两个观察结果都表明,如果系统重新创建 MainActivity,那么它也会成功恢复对话框。
另外,我只在 Android 4.2.1/4.2.2 上重现。其他版本好像还可以。
有人遇到过这样的问题吗?有什么想法吗?
更新:
刚刚意识到我可以重现该问题即使不开始其他活动!单击主页按钮就足够了,因此应用程序转到后台,然后从最近的应用程序列表中选择应用程序,因此它又回到前台。对话框不见了。但是如果我旋转设备,就会显示对话框。
【问题讨论】:
标签: android android-fragments dialog android-support-library