支持库从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开始。

  • 23.2.0在4.X中将矢量绘制为背景
  • 如何使用BottomSheetDialog?
  • 谷歌地图Android API v2抛出GooglePlayServicesNotAvailableException,过时,SupportMapFragment.getMap()返回null
  • 25.1.0 Android支持库正在打破晶圆厂行为
  • 支持库更新后达到counterMaxLength限制时出现TextInputLayout的Android EditText崩溃23.2.0
  • Android:底部导航视图 - 更改所选项目的图标
  • 如果不需要,防止CollapsingToolbarLayout崩溃
  • Android BottomSheet:在工具栏下面
  • 注意新的支持25.1.0

    片段生命周期中发生了一些变化。
    现在有新的function来优化操作并推迟片段转换。

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

    有类似的问题。 在25.3.0中修复