我们可以将Fragment理解成一个迷你型的活动,因为它和活动太像了,同样都能包含布局,同样有自己的生命周期。
我们用时有两个不同包下的Fragment供选择
- android.app.Fragment。我们的程序是面向Android4.0以上的。(建议使用)
- 另一个包下的Fragment主要是用于兼容低版本的Android系统。
碎片的使用方式
碎片的简单用法
- 新建一个Class文件继承自Fragment重写onCreateView()方法加载布局。
- 在activity_main.xml文件中使用<fragment>标签在布局中添加碎片。
- 这里需要通过android:name属性来显示指明要添加的碎片类名,注意一定要将类的包名也加上
动态添加碎片
主要有以下五个步骤:
-
创建待添加碎片实例
-
获取到FragmentManager,在活动中可以直接调用getFragmentManager()方法得到
-
开启一个事务,通过调用beginTransaction()方法开启
-
向容器内加入碎片,一般使用replace()方法实现,需要传入容器的ID和待添加的碎片实例
-
提交事物,调用commit()方法来完成
AnotherFragment fragment=new AnotherFragment() FragmentManager manager=getFragmentManager(); FragmentTransaction tran=manager.beginTransction(); tran.replace(R.id.right_place,fragment); tran.commit()
在碎片中模拟返回栈
只需要调用tran.addToBackstack(null);
参数一般传入null即可。
当我们重新运行程序时,当将另一个fragment添加进来,点击Back,程序不会退出而是回到了一开始的界面,再次按下back程序才会退出。
碎片和活动之间进行通信
- 活动中调用碎片的方法
RightFragment rightFragment=(RightFragment)getFragmentManager().findFragmentById(R.id.fragment);
- 碎片中调用活动的方法
Mainactivity activity=(MainActivity)getActivity();
掌握了这两个通信方式,我们就可以实现碎片于碎片之间通信。首先在一个碎片中可以得到一个与它相关联的活动,然后通过这个活动去获取另一个碎片实例。
碎片的生命周期
活动中的有的回掉方法碎片中几乎都有,碎片还提供了一些附加方法
- onAttach() 当碎片和活动建立关联的时候调用
- onCreateView()为碎片创建视图(加载布局)时调用
- onActivityCreated()确保与碎片相关联的活动一定已经创建完毕的时候调用
- onDestroyView()当与碎片关联的视图被移除的时候调用
- onDetach()当碎片和活动解除关联的时候调用
第一次被加载到屏幕上时依次执行
onAttach() -- onCreate()--- onCreateView()--onActivityCreated()--onStart()--onResume().
当我们点击了替换按钮之后
onPause()--onStop()---onDestoryView() (如果替换的时候没有调用addToBackStack()方法,此时onDestory()--onDetach()方法也会得到执行)
当点击Back重新回到这个Frament界面
onActivityCreated()--onStart()--onResume() (onCreate()和OnCreateView()并没有执行,所以我们使用的addToBackStacck()方法使得Fragment和它的视图并没有销毁)
再按下back退出程序
onPause()--onStop()---onDestoryView()--onDestory()--onDetach()
网友评论