Fragmentation——单activity多fragmen
介绍:
Fragmentation,主要用于现在App经常需要实现的单Activity+多Fragment以及多Activity+多Fragment的形式架构。同时最最重要的是,它帮助我们封装了很多好用的方法,解决了一些官方Fragment库中存在的一些Bug。
依赖:
api 'me.yokeyword:fragmentation:1.3.6'
api 'me.yokeyword:fragmentation-swipeback:1.2.7'
1 封装BaseFragment:
自定义BaseFragment继承自Fragmentation提供的SwipeBackFragment
将BaseFragment改为抽象类,在具体业务中定义具体的页面Fragment时就继承这个类,实现它的抽象方法,传入布局,绑定视图。
封装两个抽象方法,用于在自己实际的fragment中实现,
setLayout()用于设置fragment的layout,
onBindView()用于在自己的fagment中绑定layout中的控件
BaseFragment做的事情:通过两个抽象方法和子类进行交互,帮助子类完成createView的操作
在BaseFragment中,我们通过setLayout方法得到fragment的layout,帮后面所有继承BaseFragment的fragment inflate好我们的view。
2封装ProxyActivity:(抽象类,用来绑定自定义的Fragement到界面上)继承SupportActivity(注意看好是fragmentation的包不能导成v4的)。 用于设置根fragment,设置activity的setContentView。
给子类activity(实际使用的activit)封装一个设置根fragment的方法:
BaseActivity做的事情注意一下容器的id,这里需要我们单独创建一个独特的int出来,直接在里面传123是没用的,至于为什么要去问谷歌,下面介绍该怎么做
在values中添加ids.xml 新建一个id然后as会帮我们自动生成一个独一无二的int,我们就可以为container添加id了。
到这里封装就完成了,现在我们需要使用就变得特别简单了,
实际的activity 实际的fragment在这里,我们只需要操作这两个类就可以完成对整个项目页面的操作了。