关闭

Android Fragment简介

标签: androidfragment
246人阅读 评论(0) 收藏 举报
分类:

Fragment 的设计理念就是可以支持更灵活的UI操作, 同时对大屏幕的设备有了更好的适应性. Fragment可以理解为Activity里面的一个”子Activity”, 可以单独的处理动作增加删除等.每个Activity内部都维护着一个Fragment专用的堆栈, 这样用户在按下返回键的时候, 可以回到Fragment的前一个状态.

Fragment的添加:

可以通过在Activity的布局文件中添加<fragment>标签添加Fragment(静态), 或者在代码中直接添加一个fragment(动态).

通过标签指定fragment的xml代码如下:

<?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.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

fragment:name指定了fragment的类. Fragment可以使用id或者tag来作为自己的唯一标识. 静态添加的fragment使用方便, 布局简单, 用法跟view等类似, 但是不可以被动态删除或者替换.

动态添加也不难, 三部曲:

首先你需要有一个viewgroup, 比如fragment_layout.

在Activity中获取到FragmentManager, 通过FragmentManager获取到FragmentTransaction

通过FragmentTransaction将fragment添加到指定的viewgroup里, 然后不要忘记commit().

替换和删除也是一个套路. 代码:

getFragmentManager().beginTransaction().add(R.id.fragment_layout, fragment).commit();

Fragment的生命周期:

Fragment的生命周期跟Activity非常类似, 大同小异. 并且方法的调用跟它的Activity是相关联的.

 

相比Activity新增加了onAttach(), onCreateView(), onActivityCreated(), onDestroyView(),onDetach(). 其中:

onAttach():表示当Activity与fragment关联的时候调用, 现在它有两个版本, 在API23之前是onAttach(Activity activity), API23之后推荐使用onAttach(Contextcontext), 在API23版本中onAttach(Activity activity)方法将不会被调用.

onCreateView():当fragment第一次绘制自己的界面的时候, 会调用该方法.

onActivityCreated(): 当Activity的onCreate()方法return之后, 会调用该方法.

销毁的方法跟前面的创建方法相对立, 就不说了. 下面是Activity和Fragment启动时回调方法的调用顺序: (Fragment的创建是在Activity的onCreate()方法中完成的)



参考: http://developer.android.com/guide/components/fragments.html

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41899次
    • 积分:1188
    • 等级:
    • 排名:千里之外
    • 原创:81篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条