Skip to content
YoKey edited this page Jul 27, 2017 · 38 revisions

Fragmentation在使用过程中有问题?

欢迎发邮件或者提issue。

新版本1.0有什么重要变化?

1、特性

  • 不需要强制继承SupportActivity/SupportFragment了,可以通过implements ISupportActivity/FragmentDelegate形式自己实现自定义SupportActivity/Fragment (可拷贝SupportActivity/Fragment到自己的Support里)

  • 可以通过setFragmentAnimator()动态改变Fragment的动画了

  • 支持popTo()下的动画

  • 更好的支持处理自定义tag、添加SharedElements、不加入回退栈情况下的相关事务

  • 进一步兼容多点触控、高频事务,优化过度绘制问题

2、移除

  • 移除库中的FragmentLifecycleCallbacks(自support-25.1.0开始,官方新增了FragmentLifecycleCallbacks

  • 移除replaceLoadRootFragment(),统一使用loadRootFragment()

3、新增

  • 新增SupportHelper类,该类可以帮助获取栈内Fragment的相关信息等等

  • 增加extraTransaction()处理自定义tag、添加SharedElements、不加入回退栈的相关事务(替代原transaction()

  • 新增setFragmentAnimator()动态改变Fragment动画

  • 新增loadRootFragment(containerId, fragment, addToBack, allowEnterAnim),addToback指定是否加入回退栈(默认true),allowEnterAnim指定是否允许入场动画(默认false)

  • 新增popTo(f, includeF, afterRunnable, popAnim), popAnim:指定出栈时的动画

4、Fix:

  • 兼容support-25.4.0

  • 通过replaceFragment()加载的Fragment生命周期可以正确触发了

5、注意事项:

v1.0.0 - v1.0.8,Fragment中,在onCreate(),onCreateView()中加载Fragment的事务(比如loadRootFragment()),请迁移到onViewCreated()或者onActivityCreated()中 (v1.0.9及以后的版本不用做此项调整)

tip: 任何版本 ,Fragment中 ,如果你需要在onCreateXX()里执行start(),pop(),请放到enquequeAction()里执行

混淆:

v1.0.4及以下,需要添加混淆规则:

-keep class * extends android.support.v4.app.FragmentManager{ *; }

历史版本介绍看这里