zoukankan      html  css  js  c++  java
  • 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应用中很常见。

  • 相关阅读:
    RAISERROR (Transact-SQL)的用法
    Eclipse 工程中set() get()等方法报错的解决方法
    SqlServer单步调试
    centOS7 查看防火墙状态
    如何查看Linux端口占用情况
    异常处理机制(Begin try Begin Catch)
    inner join 、left join 、right join 和full join的区别
    Emacs 快速指南
    x01.DiamondIDE: hello ide
    剑指offer大总结
  • 原文地址:https://www.cnblogs.com/wlrhnh/p/3478145.html
Copyright © 2011-2022 走看看