盒子
盒子
Posts List
  1. 一.Fragment 定位
  2. 二.Fragment 使用
    1. 静态注册
    2. 动态注册
  3. 三.Fragment与activity通信
  4. 四.Fragment与activity,view对比
    1. fragment 与 activity
    2. fragment 与 view
  5. 五.Fragment的生命周期
  6. 六.Fragment replace 和 add

android基础(2) Fragment

一.Fragment 定位

fragment 是activity 在UI层面的组件 ,它出现的目的是为了模块化actiivty的UI组件开发,提供高扩展性和复用性

二.Fragment 使用

fragment使用方式有两种:

静态注册

自定义fragment,并将它注册在xml中,静态注册的fragment无法动态被移除掉,原因是因为移除会导致activity重绘,而activity重绘又会绘制xml中的组件,XML又包含fragment

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/id_fragment_title"
android:name="com.test.TitleFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>

动态注册

通过FragmentManager,activity可以动态添加或者删除Fragment

FragmentManager fm = getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
mFragment = new TestFragment();
transaction.replace(R.id.id_content, mFragment);
transaction.commit();

三.Fragment与activity通信

fragment 正向依赖于activity,在onAttach的时候,持有activity的引用。

fragment发消息给activity,一般情况下,fragment未来保持较好的复用性,可以将自身的一些公共行为抽象成接口,activity实现这些接口,fragment通过调用这些接口让activity决定做何种操作。

activity操作Fragment 直接使用findView获得fragment的组件

四.Fragment与activity,view对比

fragment 与 activity

  • fragment依托于activity而存在
  • fragment 设计的初衷是为了UI组件化
  • fragment不是intent的载体
  • fragment继承自object activity 继承自 context 是对外的入口,能操纵assets file broadcast
  • fragment 与 view

  • fragment与view都可以作为复用的组件。
  • fragment 通过FragmentManager与activity产生关系
  • view 能够直接被activity操作
  • fragment拥有完整的生命周期设计,更易于管理
  • fragment是粒度更粗的复用组件

五.Fragment的生命周期

启动fragment
onattach - oncreate - oncreateview - onactivitycreate - onstart - onresume

销毁fragment
onpause - onstop - ondestroyiew - ondestroy - ondettach

六.Fragment replace 和 add

replace将onCreateView产生的view替换掉 activity中用于承载的view

add将onCreateView产生的view添加到activity中承载view

支持一下
扫一扫,支持牛头码农