zoukankan      html  css  js  c++  java
  • Android——Fragment介绍

      2012CSDN年度博客之星评选期待您的参与

    http://vote.blog.csdn.net/item/blogstar/xyz_lmn

            

           Fragment是Android honeycomb 3.0新增的概念,Fragment名为碎片不过却和Activity十分相似,下面介绍下Android Fragment的作用和用法。Fragment用来描述一些行为或一部分用户界面在一个Activity中,你可以合并多个fragment在一个单独的activity中建立多个UI面板,同时重用fragment在多个activity中.你可以认为fragment作为一个activity中的一节模块 ,fragment有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity.

           一个fragment必须总是嵌入在一个activity中,同时fragment的生命周期受activity而影响,举个例子吧,当activity 暂停,那么所有在这个activity的fragments将被destroy释放。然而当一个activity在运行比如resume时,你可以单独的操控每个fragment,比如添加或删除。

           Fragment作为Android 3.0的新特性,有些功能还是比较强大的,比如 合并两个Activity,如图

                                                 

           如上图所示,用Activity A 表示文章标题列表,ActivityB表示文章具体内容。我们可以看到两个Activity通过两个Fragment合并到一个Activity的布局方式,对于平板等大屏幕设备来说有着不错的展示面板。不过因为Fragment和Activity的生命周期都比较复杂,下图表示的fragments的生命周期:

                                                 

    Activity、Fragment分别对比下:

                                                          

    两个的生命周期很类似,也息息相关。

     

    创建一个fragment你必须创建一个Fragment的子类或存在的子类,比如类似下面的代码

    public static class AndroidFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) { 
                   return inflater.inflate(R.layout.android_fragment, container, false);
        }
    }

     

    onCreate()
    当fragment创建时被调用,你应该初始化一些实用的组件,比如在fragment暂停或停止时需要恢复的

    onCreateView()
    当系统调用fragment在首次绘制用户界面时,如果画一个UI在你的fragment你必须返回一个View当然了你可以返回null代表这个fragment没有UI.

    那么如何添加一个Fragment到Activity中呢? Activity的布局可以这样写

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <fragment 
    android:name="com.android.cwj.ArticleListFragment"
                android:id="@+id/list"
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="match_parent" />
        <fragment 
    android:name="com.android.cwj.ArticleReaderFragment"
                android:id="@+id/viewer"
                android:layout_weight="2"
                android:layout_width="0dp"
                android:layout_height="match_parent" />
    </LinearLayout>

    最后提醒大家Fragment存在于Activity的ViewGroup中,按照继承关系大家就可以了解他的结构。

    参考:

    docs/guide/topics/fundamentals/fragments.html

    http://dasheng.iteye.com/blog/986809

    http://zwkufo.blog.163.com/blog/static/258825120112207254076/

    /**
    * @author 张兴业
    * 邮箱:xy-zhang#163.com
    * android开发进阶群:278401545
    *
    */

  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3168413.html
Copyright © 2011-2022 走看看