Fragment是Android 3.0之后新增的一个API,它常被用来针对像平板类的大屏幕设备的UI设计。因为一个Activity可以包含多个Fragment,相当于将Activity分解成很多Fragment块,利用FragmentManager可以动态的移除、添加、修改Fragment的组成,设计出更加灵活、更加动态的UI界面。Fragment的结构很类似于Activity,其生命周期为:onAttach()——>onCreate()——>onCreateView()——>onActivityCreated()——>onStart()——>onResume()——>运行——>onPause()——>onStop()——>onDestroyView()——>onDestroy()——>onDetach()——>销毁。同一个Activity中的Fragment之间不能直接通信,但是可以通过宿主Activity通信。
Fragment添加到Activity中的方式有两种:XML布局文件静态添加和Java代码动态添加。
XML布局文件添加需要像一般布局或者元素一样<fragment/>直接插入布局文件中。
Java代码动态添加需要FragmentManager来管理Fragment:首先得创建MyFragment类继承Fragment。
<span style="white-space:pre"> </span>FragmentManager fragmentManager = getFragmentManager();
MyFragment myFragment = new MyFragment();
fragmentManager.beginTransaction().replace(R.id.main_layout, myFragment).commit();
动态添加一个Fragment到指定的Activity需要开始一个事务,commit()方法必须执行,否则修改无效。其中R.id.main_layout是宿主容器的id,制定Fragment添加到哪个容器里。replace()方法为替换,add()为添加Fragment,多数情况下这两个方法的显示效果一样,但是add可能是几层Fragment的叠加,在某些应用中可能用到,而一般使用replace方法。