gpt4 book ai didi

android - 导航组件 popBackStack() 是否保留 fragment 状态?

转载 作者:行者123 更新时间:2023-11-29 00:53:33 29 4
gpt4 key购买 nike

当我使用新的导航组件从一个 fragment 导航到另一个 fragment 时,我可以通过以下方式成功完成:

btn_walk.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_action))

现在,如果我使用

从目标 Fragment 中弹出 backstack
findNavController().popBackStack()

启动那个 fragment 的 fragment 再次重新创建自己,但状态没有被保存,我一直在四处寻找如何修复它,但我真的不知道是否实际上如何做一个 。使用导航组件中的 navigate() 添加 函数

enter image description here

此 gif 显示了从一个 fragment 到另一个 fragment 的导航,当从目标 fragment 弹出堆栈时,它会重新创建启动该 fragment 的 fragment ,而不是保存它的状态。

如果我弹出返回堆栈,使用 fragmenttransaction.add() 方法确实可以使该 fragment 的实例保持 Activity 状态。

有什么方法可以对导航组件做同样的事情吗?

我也读过这个Navigation Architecture Fragment Reload Problem但不清楚应该如何解决。

最佳答案

fragment 从返回堆栈返回时会自动恢复其保存的状态:对于我们的无导航来说也是如此。问题似乎出在您对 Fragment 进行编码的方式上。

您可以确认这是您的 Fragment 的问题,方法是打开“不保留 Activity ”,点击主页按钮,然后返回您的应用并查看 Fragment 是否完美恢复其状态。您还可以测试正确处理配置更改(即旋转设备)的情况——同样,您应该能够将状态恢复到原来的位置。如果您处理这两种情况,那么它在导航中也能很好地工作。

关于android - 导航组件 popBackStack() 是否保留 fragment 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57172029/

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