当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《支持库从23.1.1升级到25.1.0后,popBackStack()行为有所不同》经验,为你挑选了1个好方法。

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

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

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

片段#4具有逻辑,它onViewCreated()自动路由到片段#5 (我知道,它很难看,我必须改变它).无论如何,当我想要离开片段#5时,我想恢复到片段#4之前显示的片段.我按事务名称执行此操作:

getFragmentManager().popBackStack(“”, FragmentManager.POP_BACK_STACK_INCLUSIVE);

或这个:

getFragmentManager().popBackStack(“”, 0);

但与此调用onCreateView()onViewCreated()碎片#4将被调用和片段#5将被立即添加到堆栈中.即使我恢复到片段#1 onViewCreated()为BackStack上的每个片段调用 - 对于片段#2,片段#3和片段#4,即使它们对我想要返回的FragmentTransaction无关紧要.

在支持库下,23.1.1我成功地跳回到片段#3.片段#4弹出包含而不调用onViewCreated().这似乎更直观,对我来说,因为onViewCreated()在FragmentTransaction"外部" 调用Fragments似乎没有必要吗?

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

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

我正在改变我的代码.

感谢帮助!

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



1> Gabriele Mar..:

注意新的支持25.1.0.

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

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

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有