一个app首页通常是使用Activity + Fragment
的形式展示,控制Fragment的显示和隐藏基本有两种实现方法:
1. ViewPager , 比如微信 , 优势是手势操作更加方便,官方提供了FragmentPagerAdapter可以很方便帮助我们实现数据加载(Fragment要使用懒加载的方式,避免浪费资源),劣势就是当你的第一个Fragment中已经使用了ViewPager,两层套一起事件会冲突,而且操作也不友好啦。
2. FragmentManager , 比如头条,针对使用ViewPager组合Fragment的问题,使用FragmentManager控制Fragment的显示和隐藏,不需要考虑懒加载的问题,不过不能支持滑动啦。
3. 本文主要是封装FragmentManager切换页面的相关操作。
设计思路
设计一个管理类,负责 Fragment
的创建,显示,隐藏,回收等逻辑,想要进行 Framgnet
切换的界面,只需要创建这个管理类实现监听即可,从而将这些逻辑分离出来,达到复用的目的。
定义接口
首先定义 FragmentOperator
接口,这个接口的目的是在完成 Framgent
切换之后能够告知所在的 Activity
作出相应响应操作。
1 | interface FragmentOperator { |
核心方法
使用 tag
作为标记添加 fragment
,避免重复创建
1 | private static final String FRAGMENT_ATG = "FragmentHelper"; |
显示 Fragment
在 Activity
中使用时只需要调用 showFragment()
方法即可
1 | /** |
优化
当 Activity
被回收时,记录上次的状态
1 | // 保存数据 |
使用
1 | public class TestMultiFragmentActivity2 extends BaseActivity { |
源代码
1 |
|