gpt4 book ai didi

android - 支持库从 23.1.1 升级到 25.1.0 后,popBackStack() 行为有所不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:33 26 4
gpt4 key购买 nike

从 Android 支持库 23.1.1 升级到最新的 25.1.0 后,popBackStack() 的行为在我们的应用程序中发生了变化.

例如,我在 BackStack 上有三个 FragmentTransactions。现在第四个 FragmentTrsansaction 添加到 BackStack。 FragmentTransactions 是这样的:

FragmentTransaction transaction = fragmentManager.beginTransaction()
.replace(R.id.fragment_container_single, target, CoreActivity.FRAGMENT_TAG_LEFT)
.addToBackStack(<CONCRETE_TRANSACTION_NAME>)
.commit();

Fragment#4 具有在 onViewCreated() 期间自动路由到 Fragment#5 的逻辑(我知道,这很丑陋,我必须更改它)。无论如何,当我想离开 Fragment#5 时,我想恢复到 Fragment#4 之前显示的 Fragment。我通过事务名称执行此操作:

getFragmentManager().popBackStack(“<CONCRETE_TRANSACTION_NAME_4>”, FragmentManager.POP_BACK_STACK_INCLUSIVE);

或者这个:

getFragmentManager().popBackStack(“<CONCRETE_TRANSACTION_NAME_3>”, 0);

但通过此调用,将调用 Fragment#4 的 onCreateView()onViewCreated(),并且 Fragment#5 将立即添加到 BackStack。即使我恢复到 Fragment#1 onViewCreated() 也会为 BackStack 上的每个 Fragment 调用 – 对于 Fragment#2、Fragment#3 和 Fragment#4,即使它们对 FragmentTransaction 无关紧要我想回到。

在支持库 23.1.1 下,我成功跳回了 Fragment#3。 Fragment#4 在不调用 onViewCreated() 的情况下弹出。这对我来说似乎更直观和正确,因为在我的 FragmentTransaction“外部”调用 onViewCreated() 似乎没有必要?

我知道,addToBackStack() 只保存事务状态而不是 fragment 本身, fragment 可能需要重新创建。

有类似的posts对此,但我想了解为什么在支持库更新后它会中断。我到处都找不到零钱。这是一个错误还是现在是一个错误?

我将继续更改我的代码。

感谢您的帮助!

更新升级到支持库 25.1.0 后,我遇到了更多生命周期问题/更改。有一个 Google issue我在那里另外评论了我的问题。目前我不得不回到最新的 24.2.1 并关注这个话题。这只是我的临时解决方案。这些问题从 support-library 25.0.0 开始。

最佳答案

关注新支持25.1.0

fragment 生命周期发生了一些变化。
现在有新功能来优化操作和推迟 fragment 转换。

读这个: https://code.google.com/p/android/issues/detail?id=230415

关于android - 支持库从 23.1.1 升级到 25.1.0 后,popBackStack() 行为有所不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41586819/

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