我试图理解一些奇怪的行为。我有一个 ActivityA,它调用 onCreate() 中的方法将 FragmentA 添加到 R.id.fragment_container。在 FragmentA 内部,我有一个按钮,通过使用 ActivityA 的片段管理器 (getActivity().getSupportFragmentManager()) 并替换 R.id.fragment_container 来附加 FragmentB,我还将它添加到后台堆栈。我还有另一个按钮可以启动一个新的 ActivityB。当我从 ActivityB 导航回来时,我得到:ActivityA onResume(),FragmentA onResume()。但是当我从 FragmentB 导航回来时,我得到:FragmentB onCreateView()、FragmentB onActivityCreated() 然后是 2 onResume()。
所以我的问题是......为什么在启动新活动时保存视图状态,而不是在替换和重新附加片段时保存。仅恢复该状态而不是重新创建视图并再次获取该数据看起来要好得多。这似乎与我所期望的相反的行为,所以我显然错过了一些片段状态保存/恢复步骤或其他东西。似乎活动只是在 ActivityB 启动时暂停 FragmentA(和 ActivityA)并在后按时恢复它,但是当 FragmentB 附加时 FragmentA 被完全破坏。我确信有一种方法可以防止这种情况发生,我似乎无法弄清楚。想法?