gpt4 book ai didi

android - 设备旋转后重新排序的 DialogFragments

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

DialogFramgment 有问题(在多个 Android 4.2/4.4 设备上支持 v4 库)。

我有两个 DialogFragment:EditAccountDialogFragment 和 ErrorDialogFragment。

EditAccountDialogFragment 是一个带有提交按钮的表单。单击提交按钮时,如果没有网络,我不会关闭 EditAccountDialogFragment,但会在 EditAccountDialogFragment 上方显示 ErrorDialogFragment。

由于某种原因,堆栈中对话框的顺序在设备旋转后发生变化。

旋转前:

  • ErrorDialogFragment(正确位置)
  • EditAccountDialogFragment
  • MainActivity(带有全屏 AccountsFragment)

旋转后:

  • EditAccountDialogFragment
  • ErrorDialogFragment(现在被遮挡,位置错误)
  • MainActivity(带有全屏 AccountsFragment)

LogCat 输出:

09-30 14:01:09.566: D/EditAccountDialogFragment(29054): onAttach
09-30 14:01:09.569: D/EditAccountDialogFragment(29054): onCreate
09-30 14:01:09.702: D/EditAccountDialogFragment(29054): onStart
CLICK SUBMIT BUTTON
09-30 14:01:12.531: D/TaskFragment(29054): handleTaskResult: Result [data=null, error=com.....Exception, errorType = NO_NETWORK, success=false]
09-30 14:01:12.543: D/ErrorDialogFragment(29054): onAttach
09-30 14:01:12.543: D/ErrorDialogFragment(29054): onCreate
09-30 14:01:12.564: D/ErrorDialogFragment(29054): onStart
ROTATE DEVICE
09-30 14:01:15.575: I/MainActivity(29054): onPause
09-30 14:01:15.583: D/MainActivity(29054): onSaveInstanceState
09-30 14:01:15.586: I/MainActivity(29054): onStop
09-30 14:01:15.586: D/ErrorDialogFragment(29054): onStop
09-30 14:01:15.587: D/EditAccountDialogFragment(29054): onStop
09-30 14:01:15.589: I/MainActivity(29054): onDestroy
09-30 14:01:15.595: D/AccountsFragment(29054): onDestroy
09-30 14:01:15.595: D/AccountsFragment(29054): onDetach
09-30 14:01:15.664: D/ErrorDialogFragment(29054): onDestroy
09-30 14:01:15.664: D/ErrorDialogFragment(29054): onDetach
09-30 14:01:15.680: D/EditAccountDialogFragment(29054): onDestroy
09-30 14:01:15.680: D/EditAccountDialogFragment(29054): onDetach
RESTORING ACTIVITY AND FRAGMENTS
09-30 14:01:15.695: I/MainActivity(29054): onCreate: clean start = false
09-30 14:01:15.695: D/AccountsFragment(29054): onAttach
09-30 14:01:15.695: D/AccountsFragment(29054): onCreate
09-30 14:01:15.707: D/ErrorDialogFragment(29054): onAttach
09-30 14:01:15.707: D/ErrorDialogFragment(29054): onCreate
09-30 14:01:15.710: D/EditAccountDialogFragment(29054): onAttach
09-30 14:01:15.710: D/EditAccountDialogFragment(29054): onCreate
09-30 14:01:15.756: I/MainActivity(29054): onStart
09-30 14:01:15.817: D/ErrorDialogFragment(29054): onStart
09-30 14:01:15.817: D/EditAccountDialogFragment(29054): onStart
09-30 14:01:15.819: I/MainActivity(29054): onResume

可重复性约为 50-60%。所以它看起来是疯狂的时间问题之一。

到目前为止我已经尝试过,但没有成功:

  • 尝试查看针对类似问题跟踪的 Android 问题
  • 尝试使用最新的支持v4 lib jar
  • 尝试使用 Handler.post(Runnable r)Handler.postDelayed(Runnable r, long delayMillis) 显示 ErrorDialogFragment

该应用程序大量使用了这种将一个对话框置于另一个对话框上方的 UX 模式,因此我可以通过其他用户流程重现该问题。是的,我知道这样的 UX 模式不好,编辑表单 fragment 不应该是一个对话框,而应该是一个普通的全屏 fragment 。但由于业务原因,我无法更改它。

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

最佳答案

在显示第二个对话框时尝试使用第一个对话框的 ChildFragmentManager:

...
EditAccountDialogFragment editAccountDialogFragment = ...
...
FragmentManager childFragmentManager = editAccountDialogFragment.getChildFragmentManager();
new ErrorDialogFragment().show(childFragmentManager, null);
...

在这种情况下,ErrorDialogFragment 将在恢复 EditAccountDialogFragment 后恢复并显示。

关于android - 设备旋转后重新排序的 DialogFragments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26119776/

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