相信学习过Android的童鞋们都对Fragment和Activity非常熟悉了。这里我们就不准备论述Fragment和Activity的具体定义,用法以及概念。
理解两个之间的区别的时候,只需要了解一个问题,就是Fragment能做到的Activity可以做到吗?可以做到的话没有问题,不可以做到的话,为什么不可以呢?这个就是他们之间的区别。
首先我们先来看一下Fragment的生命周期。
我们再来看一下Activity的生命周期。
这个方面我们不必多说。接下来我们来看他们的异同点。
1.Fragment显的更加灵活。可以直接在XML文件中添加,Activity则不可以。
2.Fragment可以在一个界面上替换一部分界面,Activity不可以,做不到。
3.Fragment和Activity之间的通信(控件之间的相互操作)。
Fragment控制Fragment:得到一个Activity,然后通过这个Activity的getFragmentManager()获得该Fragment的实例。
Fragment控制Activity:每个Fragment都有一个getActivity()得到一个活动。MainActivity activity = getActivity();
Activity控制Fragment:XXXFragment fragment = getFragmentManager().findFragmentById();
Activity控制Activity:这个显然是通过Intent活动之间的通信完成。别忘了在被打开的活动中创建Intent和得到的Intent一起进行,写个静态的actionStrat()。
4.Fragment和Activity中控件的加载。
Fragment的载入是通过OnCraeateView的inflater.inflate()加载布局的,然后通过修改main.xml,在main.xml上增加注册fragment标签,然后通过android:name来载入你已经通过inflater加载的隐藏布局。
有几个关键点:Fragment是通过inflater加载View然后在main.xml中注册的道德。当然如果你可以在fragment中得到View那就可以通过View.findVewById()来操作fargment上的具体控件。
5.动态加载Fragment。
首先,监听你的按钮。
1)创建待加载的fragment的实例。
2)得到FragmentManger,在活动中可以直接调用getFragmnetManger()方法获得。
3)调用Manager的BeginTransation()。
4)用replace()改变不同的Fragment。
5)Commit事务。
6)碎片的生命周期。