(转自:http://www.devstore.cn/essay/essayInfo/3243.html)
(1)两者的生命周期:
(2)Fragment显得更加灵活,可以直接在XML文件中添加,Activity则不能。
Android:id="@+id/left_fragment"
Android:name="com.example.fragmenttest.LeftFragment"
…
…
…/>
Android:id="@+id/right_fragment"
Android:name="com.example.fragmenttest.rightFragment"
…
…
…/>
(3)Fragment可以在一个界面上灵活的替换另一个Fragment,Activity不可以。替换的时候注意要将这个Fragment放在返回栈上。
实现步骤:
A创建待加载Fragment的实例
B得到FragmentManager,在活动中可以直接调用getFragmentManager()方法获得。
C调用Manager的BeginTansation()
D用replace()改变不同的Fragment
E commit事务。
(4)Fragment和Activity之间的通信:(也就是控件的相互操控)
Fragment控制Fragment:得到一个Activity,然后通过这个Activity的getFragmentManager()获得该Fragment的实例。
Fragment控制Activity:每个Fragment都有getActivity()得到一个活动,MainActivityactivity=getActivity();
Activity控制Fragment:
xxxFragmentxxx=getFragmentManager().findFragmentById();
Activity控制Activity:这个显然是通过Intent活动之间的通信完成。别忘了在被打开的活动中创建Intent和得到Intent一起进行,写个静态的actionStart()。
(5)Fragment和Activity中控件的加载
Fragment的载入是通过OnCreateView的时候通过inflater.inflate()加载布局,然后通过修改main.xml,在main.xml上增加注册fragment标签,然后通过android:name来载入你已经通过inflater加载的隐藏布局。
Fragment是通过inflater加载View然后在main.xml中注册得到的。当然如果你可以在fragment中得到View那就可以通过View.findViewId()来操控fragment上的具体控件。
Activity更倾向于一个整体模块容器,而Fragment是其中的子模块。可以理解成一个工厂(App)有N个生产不同产品的产房(Activity),每个厂房(Activity)里面有生产N类子产品的机器(Fragment)。
所以,Activity的存在可以对应用更好的结构化和模块化的划分,让应用有更健壮和清晰的层次,而Fragment可以让将应用的功能细化和具象化。
网友评论