Android面向面试:Fragment内容复习
程序员文章站
2022-03-27 21:35:12
Fragment复习
组件">1. Fragment为什么被称为第五大组件
Fragment为什么被称为第五大组件
使用频率高,有自己的生命周期,同时可以灵活的加载到Acti...
Fragment复习
组件">1. Fragment为什么被称为第五大组件
Fragment为什么被称为第五大组件
使用频率高,有自己的生命周期,同时可以灵活的加载到Activity中去。它是依赖于Activity的,不能单独存在。
Fragment的加载
静态加载在xml布局中使用fragment标签加载进来,name指定对应的Fragment即可。
动态加载
// 获取Fragment管理器 FragmentManager fm = getFragmentManager(); //开启事务 FragmentTransaction transaction = fm.beginTransaction(); DemoFragment mDemoFragment = new DemoFragment(); //将Fragment加载到Activity中 transaction.replace(R.id.content_layout, mDemoFragment); //将该Fragment添加到回退栈中 transaction.addToBackStack("demoFragment"); //提交 transaction.commit();
FragmentPagerAdapter和FragmentStatePagerAdapter的区别
Fragment和ViewPager结合使用的时候,可能会用到FragmentPagerAdapter和FragmentStatePagerAdapter
FragmentPagerAdapter适用于页面较少的情况;FragmentStatePagerAdapter适用于页面较多的情况,因为它在切换页面时,进行了内存回收。 区别在于destroyItem方法,FragmentPagerAdapter中只是将视图解绑mCurTransaction.detach((Fragment)object);,并未从Adapter中移除。FragmentStatePagerAdapter中进行了remove操作mCurTransaction.remove(fragment);,可以被垃圾回收器直接回收。
2. Fragment的生命周期
2. Fragment的生命周期
Activity和Fragment的生命周期之前的关系
解释一下,比Activity多出来的几个生命周期方法:
onAttach():和Activity关联时调用 onCreateView():创建Fragment视图 onActivityCreated():当Activity调用了onCreate时调用 onDestoryView:Fragment视图被移除时调用 onDetach:Fragment和Activity取消关联时调用。
3. Fragment之间的通信
3. Fragment之间的通信
和Activity通信:
在Fragment中通过getActivity()就可以操作Activity中相关的方法。
在Activity中调用Fragment中的方法
在Fragment中创建一个接口,让Activity实现该接口,进行接口回调执行。
Fragment和Fragment之间通信
在Fragment中获取Activity,然后通过Activity通过findFragmentById()获取另一个Fragment,即可进行通信。
4. Fragment管理器:FragmentManager
4. Fragment管理器:FragmentManager
FragmentManager一般是用来操作Fragment的,但是直接操作Fragment的是FragmentTransaction而不是它自己。
FragmentTransaction的常用Api:
replace:替换Fragment实例,是remove和add的结合 add:将Fregment添加到对应的id布局中 remove:将Fragment从Activity中移除 addToBackStack:将Fragment添加到回退栈中