Android Fragment简介

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值