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

前端之家收集整理的这篇文章主要介绍了android-popBackStack()行为在支持库从23.1.1升级到25.1.0后有所不同前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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的片段而不调用onViewCreated().这似乎更直观,对我来说,因为在FragmentTransaction的“外部”调用onCCreated()for Fragments似乎是不必要的?

我知道,addToBackStack()只保存事务状态而不是片段本身,并且可能必须重新创建片段.

有类似的posts,但我想了解为什么它在支持库更新后中断.我无法在任何地方找到变化.这是一个Bug还是现在的Bug?

我正在改变我的代码.

感谢帮助!

UPDATE
升级到support-library 25.1.0后,我有更多生命周期问题/更改.有一个Google issue我另外评论了我的问题.目前我不得不回到最新的24.2.1并密切关注这个话题.这只是我的临时解决方案.这些问题始于support-library 25.0.0.

解决方法

注意新的支持25.1.0.

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

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

猜你在找的Android相关文章