【发布时间】:2019-09-27 09:45:26
【问题描述】:
我正在调用 NavController.popBackStack() 以返回到应用程序中的上一个片段。它实际上导航回来,但似乎创建了前一个片段的一个新实例,而不是重用前一个片段。让我更详细地解释发生了什么:
从 FragmentA 我通过在按钮的 onClick 方法中调用它来打开 FragmentB:
findNavController(FragmentA.this).navigate(R.id.fragment_b);
我还通过在执行此操作之前调用 button.setEnabled(false) 来禁用该按钮。
现在,FragmentB 已创建,一切正常。
然后我想回到之前的 FragmentA 实例,但是当我调用时
findNavController(FragmentB.this).popBackStack();
它返回到 FragmentA,但它在那里调用 onCreateView,因此我之前禁用的按钮再次启用,这不是预期的行为。
我尝试使用 navigateUp(),但结果是一样的。
有什么想法吗?
提前非常感谢!
【问题讨论】:
-
Fragment A 是否被视为顶级,即它是 BottomNavigationView 的一部分吗?
-
你解决问题了吗?我遇到了同样的情况。
-
@Tony 不幸的是我没有,我只是采取了不同的方法。我建议您对这个问题进行投票,以便提高知名度,也许有人最终会回答,但我不会乐观,因为这在三个月内没有得到一个答案。
-
你在哪里saving your fragment's state?似乎您还会因配置更改或进程死亡和重新创建而失去状态(即,您可以使用“不保留活动”开发人员选项模拟什么)。如果你处理了这些情况,那么当你从后台堆栈返回 Fragments 时,它们也会保存并恢复它们的状态。
标签: android android-fragments androidx