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

从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(); 

片段#4具有逻辑,它在onViewCreated()期间自动路由到片段#5(我知道,这是丑陋的,我必须改变这一点)。 无论如何,当我想离开片段#5时,我想恢复到片段#4之前显示的片段。 我通过事务名称来做到这一点:

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

或这个:

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

但是通过这个调用,将调用片段#4的onCreateView()onViewCreated() ,片段#5将被立即添加到BackStack。 即使我恢复到片段#1 onViewCreated()被称为每个片段BackStack – 片段#2,片段#3和片段#4,即使他们无关紧要的FragmentTransaction我想返回。

在支持库23.1.1我成功跳回到片段#3。 片段#4被popup而不调用onViewCreated() 。 这似乎更直观,对我来说是正确的,因为调用onViewCreated()的碎片“我的FragmentTransaction外”的碎片似乎是不必要的?

我知道, addToBackStack()只保存事务状态,而不是碎片本身,碎片可能不得不被重新创build。

有类似的post ,但我想明白为什么它支持库更新后中断。 我找不到任何地方的变化。 这是一个错误还是现在是一个错误?

我将继续改变我的代码。

感谢帮助!

更新升级到support-library 25.1.0后,我有更多的生命周期问题/更改。 有一个谷歌的问题 ,我额外评论我的问题。 目前我不得不回到最新的24.2.1,并关注这个话题。 这只是我的临时解决scheme。 这些问题从support-library 25.0.0开始。

Solutions Collecting From Web of "支持库从23.1.1升级到25.1.0后,popBackStack()行为会有所不同"