Android开发入门-《创建Fragment》

非专业人士蹩脚翻译,原文详见 —— [ Android Developer ]

你可以认为一个fragment就是一个具有自我生命周期的activity模块,该模块可以独立接收事件,并且在activity运行时的任意时刻,你都可以将其添加进来或者移除(某种程度上来说可以理解为“子程序”)。本课程将展示如何通过支持库来拓展一个Fragment,最低可兼容版本为Android 1.6的Android系统。

在开始课程之前,你需要将你的Android项目设置为使用支持库.如果你之前没有使用过支持库,请设置你的项目使用v4版本库,详情参见支持库设置。除此之外,你还可以通过v7版本库的菜单栏来代替fragment,该版本库兼容至Android 2.1同样也包含fragment的APIs。

创建一个Fragment类


创建一个fragment,拓展fragment类,然后重写它的关键生命周期函数并加入到你的程序逻辑中,就像你写activity类一样。

唯一的不同就是在创建fragment类的时候你必须使用 onCreateView()回调来定义布局。事实上,这也是让fragment能够运行起来的唯一回调。

例如下面的fragment代码展示了一种布局:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;

public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

就像一个activity,一个fragment也应该实现他的回调,这样在你的程序运行时就可以管理fragment的状态,在你需要的时候移除或者添加fragment,在你的activity在状态转变时候,fragment也应同样改变。例如在你activity执行onPause()函数的时候,fragment同样也应该执行onPause()。

更多关于fragment生命周期和回调函数可以参见Fragment开发指南

使用XML为Activity添加Fragment


每一个实例化的Fragment都必须关联一个父类FragmentActivity,使其可重复使用同时成为一个模块化的UI组件。你可以实现这种关联通过你的XML文件。

注意:FragmentActivity只是用于Android API level 11及以下版本,11及以上版本使用Activity。

以下是大屏幕设备(限定词为“large”)的XML布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.android.fragments.ArticleFragment"
              android:id="@+id/article_fragment"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

Tips:对不同尺寸屏幕设备的设置详见 [ 支持不同屏幕尺寸 ]

然后将布局应用到你的activity:

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

如果你使用的是v7版本菜单栏库,Fragment将被 AppCompatActivity代替。如何添加菜单栏,请见《Android开发入门-添加菜单栏》(还没写,先预定位置,哈哈:))或者原文

注意:当你用XML布局文件的方式将Fragment添加进activity时,你的Fragment是不能被动态移除的。如果你想要在用户交互的时候把fragment切入与切出,你必须在activity启动后,再将fragment添加进activity。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值