一、使用方法
1、继承自Fragment,实现onCreateView以显示
2、布局文件中显示
在Activity的xml文件中布局Fragment(必须声明ID,否则崩溃,不提倡使用)
注意:此时如果Fragment是继承自android.support.v4.app.Fragment,则Activity必须是继承自android.support.v4.app.FragmentActivity。
Fragment在Android 3.0(API level 11)后推出,为了在以前的低版本中使用,引入了android.support.v4.app.Fragment 和android.support.v4.app.FragmentActivity。
3、代码中动态显示
getFragmentManager().beginTransaction().replace(R.id.fl_a_1,fragment1).commit();
4、FragmentTransaction的几种操作
(1)add(int viewId,Fragment fragment):将Fragment添加到指定布局文件中指定ID的view中
(2)hide(Fragment fragment):隐藏Fragment(实际上Fragment仍然存在、存活)
(3)show(Fragment fragment):显示Fragment,与hide对应
(4)remove(Fragment fragment):将Fragment移除,如果没有将Fragment添加到回退栈中,Fragment将被销毁。
(5)replace(int viewId,Fragment fragment):替换指定id的控件为指定的Fragment
(6)detach(Fragment fragment):将指定fragment从UI中移除,Fragment存活,不执行onDestroy和onDetach方法。
(7)attach(Fragment fragment):重建view视图,附加到UI上并显示。如果是调用完detach方法再来此方法不会调用onAttach和onCreate方法
在执行完以上操作后再调用commit方法提交事务才能生效
二、生命周期
1、onAttach
当Fragment与Activity发生关联的时候调用,传入一个Context上下文参数。
2、onCreate
当创建Fragment时与onAttach一起被调用。
3、onCreateView
每次创建、绘制Fragment的View时调用并返回一个View对象
4、onActivityCreate
当Fragment所在的Activity被onCreate完成时调用
5、onDestroyView
当Fragment的视图被移出时调用
6、onDestroy
当Fragment被销毁时调用;
7、onDetach
与onAttach相对应,当Fragment与Activity关联被取消时调用。但是,调用detach方法是并不会调用它。
三、FragmentPagerAdapter与FragmentStatePagerAdapter
当使用Fragment与ViewPager搭配时,必须适应FragmentActivity和android.support.v4.app.Fragment。
Viewpager至少会预加载左右两侧相邻的1个页面
1、区别:
使用FragmentPagerAdapter时,会缓存每个Fragment,FragmentStatePagerAdapter则不会。当离开当前Fragment界面时,FragmentStatePagerAdapter会销毁(FragmentPagerAdapter则会销毁Fragment的view)上上个(或上个,如果有)界面的Fragment:
FragmentPagerAdapter :onPause、onStop、onDestroyView (不完全销毁)
FragmentStatePagerAdapter :onPause、onStop、onDestroyView、
onDestroy、onDetach (完全销毁)
对于FragmentStatePagerAdapter ,每次销毁时都会自动调用onSaveInstanceState(Bundle outState)方法通过bundle将信息保存下来,之后可在onCreate方法中进行回访创建。
网友评论