Fragment
1.Fragment任务栈
答:
2.与activity的通信
答:
①Activit传递数据给Fragment:
在Activity中创建Bundle数据包,调用Fragment实例的setArguments(bundle) 从而将Bundle数据包传给Fragment,然后Fragment中调用getArguments获得 Bundle对象,然后进行解析就可以了
②Fragment传递数据给Activity
在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口, Fragment就可以通过回调接口传数据了
3.Fragment复用
答:1.将viewpager + tablayout + fragment复用
①初始化数据 tablayout和 fragment的数据
②添加tab栏的选项
③创建适配器,并且重写里面的构造
这个也必须重写 不然tab栏不出来
//ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text
@Override
public CharSequence getPageTitle(int position) {
return listTitles.get(position);
}
④将Tab栏与 viewpager绑定起来 mTab.setupWithViewPager(mVP);
⑤给Tabs设置适配器 setTabsFromPagerAdapter
复用的好处:
避免显示错乱
避免重复添加
避免多余的内存占用
优化界面启动速度
4.两种适配器的区别
答:两种适配器,FragmentPagerAdapter和FragmentStateAdapter。前者类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的场景。如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,这时候,就需要用到后者。后者会把已经创建的Fragment进行保存。