【发布时间】:2014-11-10 17:54:59
【问题描述】:
我有一个发送网络调用的支持库片段,当它收到特定的网络响应时,recreate() 是父活动。我可以看到该活动确实被重新创建,因为我可以看到 onCreate() 和 onDestroy() 被调用。
但是在重新创建活动之后,片段仍然存在并且它陷入了不断重新创建和制作新片段的循环中。
这是活动的onCreate() 的一部分:
if (someLogic()) {
fragmentA = new FragmentA();
FragmentUtil.addFragment(getSupportFragmentManager(), fragmentA);
} else {
fragmentB = new FragmentB();
FragmentUtil.addFragment(getSupportFragmentManager(), fragmentB);
}
FragmentA 是进行网络调用的片段,FragmentB 是应该在recreate() 之后显示的片段。当我使用getSupportFragmentManager().getFragments() 检查片段列表时,我看到了 1 个 FragmentA 实例和 16 个 FragmentB 实例。
我的问题是为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
你能展示你如何添加片段和重新创建活动吗?我的猜测是您必须在重新启动活动之前删除 fragmentA,但我需要查看代码。顺便说一句,您为什么不简单地将 fragmentA 替换为 fragmentB 而不是重新启动活动?
-
并不是说它是一个具体的答案或它是理想的解决方案,但您可以检查您的片段堆栈并仅在需要时添加一个新片段,否则/或者您可以替换/刷新当前片段