APP开发实战79-Fragment和Activity比较

(转自: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可以让将应用的功能细化和具象化。

你可能感兴趣的:(APP开发实战79-Fragment和Activity比较)