跟Google学习Android开发-起始篇-用碎片构建一个动态的用户界面(2)

4.2 创建一个碎片


你可以把一个碎片考虑成活动的一个模块化的部分,它有自己的生命周期,接收自己的输入事件,您可以在活动运行时添加或删除它(有点像一个你可以在不同的活动中重用的子活动)。这节课展示如何使用支持库扩展Fragment类,使您的应用程序对运行低于Android 1.6版本系统的设备保持兼容。

注:如果你由于其他原因决定你的应用程序需要的最低API级别为11或更高的,你并不需要使用支持库,可以改用框架的构置Fragment类和相关的API。只是要知道,这节课的重点是使用支持库的API,它使用一个特定的软件包签名和有时与平台中包含的版本相比略有不同的API名称。


创建一个Fragment类


要创建一个碎片,扩展Fragment类,然后重写关键的生命周期的方法来插入你的应用程序逻辑,类似于你处理Activity类的方法。

创建碎片时的一个区别是,你必须使用 onCreateView()回调来定义布局。事实上,这是为了让一个碎片运行你唯一需要的回调。例如,下面是一个简单的指定自己布局的碎片:


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,
        BundlesavedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}


就像一个活动,一个碎片应实现其他让您可以管理它自己的状态生命周期回调方法,比如它从活动中添加或删除,以及活动在它的生命周期状态之间的过渡。例如,当活动onPause()方法被调用时,在活动的任何碎片也会接收到onPause()调用

关于碎片生命周期和回调方法的更多信息,可参看《Fragment开发指南》。


使用XML添加碎片到活动


虽然碎片是可重用的、块化的UI组件,但是Fragment类的每个实例都必须与父FragmentActivity关联。你可以在你的活动布局XML文件内定义每个碎片来实现这种关联。

注意: FragmentActivity是在支持库中提供的一种特殊的活动,用来在版本在API级别11更旧的系统中处理碎片。如果最低系统版本是API级别11或更高,那么你可以使用一个普通的Activity

下面是一个例子,当设备屏幕上被认为是“large”时(在目录名用largr标识),在布局文件中添加两个碎片到活动。

res/layout-large/news_articles.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>


提示:有关为不同的屏幕尺寸创建布局的更多信息,请阅读支持不同的屏幕尺寸


下面是活动应用此布局的方法:


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);
    }
}

注意:当您通过在布局XML文件中定义碎片来一个添加碎片到活动布局时,您不能在运行时移除碎片。如果您打算在用户交互时中置换碎片,你必须在活动第一次启动时添加碎片到活动时,这会在下一课中展示。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值