Fragment在xml中但作用不是显示view

2013-12-17

有时候会发现在xml文件中有使用fragment,但是却不是为了显示View,代码如下:

 1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

 2     xmlns:tools="http://schemas.android.com/tools"

 3     android:layout_width="match_parent"

 4     android:layout_height="match_parent"

 5     tools:context=".AnimTest" >

 6       

 7     <fragment

 8         android:id="@+id/loader_fra"

 9         class="com.example.sdtest.LoadInXmlFragment"

10         android:layout_height="0dip"

11         android:layout_width="0dip"

12         android:visibility="gone"/>

13   

14     <ImageView

15         android:id="@+id/welcome_image"

16         android:layout_width="wrap_content"

17         android:layout_height="wrap_content"

18         android:src="@drawable/phone"

19         tools:ignore="ContentDescription" />

20   

21 </FrameLayout>

可以看到上面xml文件中有LoadInXmlFragment,那我们来看看当进入和退出Activity时Activity和LoadInXmlFragment的生命周期, log如下:

 1 // Enter Activity:

 2 D/David-Activity( 7378): onCreate

 3 D/David-Fragment( 7378): onAttach

 4 D/David-Activity( 7378): onAttachFragment

 5 D/David-Fragment( 7378): onCreate

 6 D/David-Fragment( 7378): onCreateView

 7 D/David-Fragment( 7378): onActivityCreated

 8 D/David-Activity( 7378): onStart

 9 D/David-Fragment( 7378): onStart

10 D/David-Activity( 7378): onResume

11 D/David-Fragment( 7378): onResume

12 // Exist Activity:

13 D/David-Fragment( 7378): onPause

14 D/David-Activity( 7378): onPause

15 D/David-Fragment( 7378): onStop

16 D/David-Activity( 7378): onStop

17 D/David-Fragment( 7378): onDestroy

18 D/David-Activity( 7378): onDestroy
D/David-Fragment表示LoadInXmlFragment中打印的log;
D/David-Activity表示Activity中打印的log;
可以看到Fragment基本是随着Activity执行自己的生命周期函数,因此这样使用Fragment的好处是:
1. 由于Fragment的上面周期和Activity保持一致,因此可以利用其完整的生命周期,将某些需要在Activity特定生命周期中执行的操作放在Fragment里面;
2. 保证较好的编码风格;
3. 目前就想到这么多,希望大家补充;

这种方式在Phonebook应用中很常见。

 

你可能感兴趣的:(Fragment)