现在的位置: 首页 > 综合 > 正文

Fragment

2013年08月20日 ⁄ 综合 ⁄ 共 1922字 ⁄ 字号 评论关闭

Fragment代表用户界面的一部分界面或者行为,能在一个Activity中使用多个Fragment或者多个Activity使用一个Fragment。你可以把Fragmen 想象成Activity中的一个单元模块,它有自己的生命周期、接收或增加或移除自己的输入事件(触摸事件也是输入事件)。

Fragment必须嵌入到Activity中,并且Fragment的生命周期被调用其的Activity直接影响。例如:当Activity   paused时,Fragment也会paused。使用者能独立的控制每个fragment,比如增加或者移除他们。

当使用者使用fragment作为Activity布局的一部分时,它必须按层次的定义到ViewGroup中并且定义其自己的View。使用者可以插入一条fragment到Activity布局中,通过在布局文件中声明<fragment>标签元素,或者在应用程序代码中增加到一个存在的ViewGroup中。然而,fragment并不是一个Activity布局中必须的,也可以让其处于不可见状态工作。

 

创建Fragment

   为了创建Fragment,使用者必须建一个Fragment的子类,Fragment有些与Activity类似的方法,其包含的回调方法类似Activity,例如:onCreate、onStart、onPause与onStop。事实上,使用者可以把一个写好的Android程序转换为使用fragment的程序,使用者只需简单的把Activity中的回调方法移到fragment的回调中去。

   一般来说,至少调用下面的生命周期方法:

onCreate():当fragmen被创建时被系统调用时,可以再这个方法中初始化fragment将在生命周期中保留的基础组件。

onCreateView() 当fragment第一次绘制用户界面时调用此方法,为了画UI,使用者必须返回View对象作为fragment的根布局,如果fragment不需要提供UI就返回null。

onPause() 这个方法简单点说就是让使用者保存数据用的。

 

具体创建方法:

1.    新建一个类TestFragment继承Fragment,实现onCreateView()方法。

2. 在main.xml文件中添加fragment标签。比如:

    <fragment

        android:id="@+id/titles"

        android:tag="ttt"

        android:layout_width="0px"

        android:layout_height="match_parent"

        android:layout_weight="1"

       class="wei.liu.TestFragment"/>

3.  在Activity中setContentView(R.layout.main)就能看到fragment中定义的布局效果了。

 

 

控制Fragment

   Fragment可以通过getFragment()方法得到FragmentManager对象,再通过FragmentManager的findFragmentById或者findFragmentByTag方式得到Fragment。一般不通过Fragment对象控制控制Fragment状态,而是通过FragmentTransaction对象控制。FragmentTransaction对象可以通过FragmentManager的beginTransaction()方法获得。

         FragmentTransaction的add系列方法是把fragment存到FragmentTransaction便于统一管理。hide(Fragment fragment)方法用于影藏add过的fragmentshow(Fragment fragment)与之对应。

replace(int containerViewId, Fragment fragment)方法可以用fragment替换掉containerViewId的显示,这个id必须为Viewgroup或继承其的View或者fragmentid

 

Fragment的子类ListFragment是一个ListView样式的fragment,可以不继承不重写,直接像ListView一样setListAdapter来附加显示。setListShown(boolean
shown)
可以控制ListView显示不显示。

 

 




一个ListFragment的例子:点击打开链接

抱歉!评论已关闭.