gpt4 book ai didi

android - 从另一个 Activity 返回后 DialogFragment 消失了

转载 作者:行者123 更新时间:2023-11-30 02:35:31 30 4
gpt4 key购买 nike

有很多问题在讨论 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)

FragmentManageer 是从 MainActivity 中获取的:

android.support.v4.app.FragmentActivity.getSupportFragmentManager()

用户单击 SettingsDialogFragment 上的按钮,触发显示 PasslockSetupActivity (android.support.v4.app.FragmentActivity)。用户完成密码锁设置,我们调用 PasslockSetupActivity.finish()。

预期结果:用户应该在带有 AccountsFragment 的 MainActivity 上看到 SettingsDialogFragment。实际结果:用户看到带有 AccountsFragment 的 MainActivity(没有对话框!)

观察:

  • 如果在设备上启用了“不保留 Activity ”开发人员选项,那么它会按预期工作。
  • 如果用户旋转设备,则对话框会出现!

两个观察结果都表明,如果系统重新创建 MainActivity,那么它也会成功恢复对话框。

此外,我只在 Android 4.2.1/4.2.2 上重现。其他版本好像没问题。

有人遇到过这样的问题吗?有什么想法吗?

更新:

刚刚意识到我可以重现问题,甚至无需开始其他 Activity !只需单击“主页”按钮,应用程序就会转到后台,然后从最近使用的应用程序列表中选择应用程序,它就会回到前台。对话消失了。但是如果我旋转设备,就会显示对话框。

最佳答案

来自 DialogFragment displayed from onContextItemSelected doesn't survive onPause/onResume 的解决方案帮助了我。

new Handler().postDelayed(new Runnable() {
public void run() {
showMyDialogFragment();
}
}, 300);

但是 300 毫秒对我来说并不可靠,所以我使用了 500 毫秒。

看起来这个问题有官方问题 - https://code.google.com/p/android/issues/detail?id=41901

关于android - 从另一个 Activity 返回后 DialogFragment 消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26632628/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com