使用导航架构操作点击返回按钮时如何避免片段重新创建?

Posted

技术标签:

【中文标题】使用导航架构操作点击返回按钮时如何避免片段重新创建?【英文标题】:How to avoid fragment recreation when tap back button using navigation architecture actions? 【发布时间】:2019-06-13 10:29:43 【问题描述】:

我正在使用 android studio 导航组件创建一些片段并使用操作在它们之间切换。问题是每次我点击返回按钮从 Fragment2 返回到 Fragment1 时,都会重新创建 Fragment 1。

我想避免这种情况。

我找到了不使用导航组件的解决方案,只需将“.replace”替换为“.add”,但找不到任何有关如何使用导航组件执行相同操作的信息。

【问题讨论】:

目前有什么解决方案? 有一个函数叫做 navigateUp()。这将导航到 backstack 中的最后一个片段而不重新创建它。调用:findNavController().navigateUp() 【参考方案1】:

我认为重新创建您的片段 1 是正常的事情,我认为您有一个片段容器。当您从片段 1 移动到片段 2 时,您使用 FragmentTransaction.commit() 将片段 1 替换为片段 2 布局 如果要控制 App 的后退按钮,可以在 Mainactivity 类中重写 Onbackpresed 方法。 当你按下返回按钮时你具体想做什么??

【讨论】:

我也面临这个问题。覆盖 onBackpress 不是解决方案,我们一定会错过一些东西。

以上是关于使用导航架构操作点击返回按钮时如何避免片段重新创建?的主要内容,如果未能解决你的问题,请参考以下文章

使用导航架构组件添加(而不是替换)片段

导航组件防止在后按时重新创建片段

导航架构片段重载问题

使用导航控制器按下后退按钮后,如何防止先前的片段出现?

使用导航架构时如何设置“允许重新排序”?

关于android导航架构组件的问题