Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 导航组件popBackStack()是否保留片段状态?_Android_Android Fragments_Kotlin_Android Navigation_Android Architecture Navigation - Fatal编程技术网

Android 导航组件popBackStack()是否保留片段状态?

Android 导航组件popBackStack()是否保留片段状态?,android,android-fragments,kotlin,android-navigation,android-architecture-navigation,Android,Android Fragments,Kotlin,Android Navigation,Android Architecture Navigation,当我使用新的导航组件从一个片段导航到另一个片段时,我可以通过以下方式成功完成: btn_walk.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_action)) 现在,如果我用 findNavController().popBackStack() 启动该片段的片段再次自我创建,但状态未被保存,我一直在四处查看如何修复它,但我真的不知道是否实际如何使用导航组件中的导航()添加函数 此gif显示从一个

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

btn_walk.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_action))
现在,如果我用

findNavController().popBackStack()
启动该片段的片段再次自我创建,但状态未被保存,我一直在四处查看如何修复它,但我真的不知道是否实际如何使用导航组件中的
导航()
添加
函数

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

使用
fragmenttransaction.add()
方法也会在弹出后堆栈时保持该片段的实例处于活动状态

是否有任何方法可以对导航组件执行相同的操作


我也读过这篇文章,但还不清楚应该如何解决。

片段从后堆栈返回时自动恢复其保存的状态:对于我们的无导航,这是正确的。似乎问题在于你是如何编码你的片段的


您可以通过打开“不保留活动”,点击主页按钮,然后返回应用程序,查看片段是否完美恢复其状态,来确认您的片段存在问题。您还可以测试正确处理配置更改(即,旋转设备)的情况—同样,您应该能够将您的状态恢复到原来的状态。如果您同时处理这两种情况,那么它在导航方面也会非常有效。

我强烈建议您单独提问,如果您有特定的视图等。在这两种情况下,您在保存/恢复其状态方面都有困难。谢谢Ian,我将在明天看一看,这个问题实际上是合法的。这是一个导航组件错误,这里正在讨论。还有一个bug报告@TatiOverflow-no,与此问题无关。后堆栈上的片段已正确保存和恢复其状态。该问题链接专门针对不在后堆栈上的片段。