Android:创建一个片段

创建一个片段

       你可以把片段想象为活动中的一个模块化的部分,它有自己的生命周期,接受自己的输入事件,并且在活动运行时,你能够添加它或者移除它(有点像子活动,你能够在不同的活动中使用它)。这篇文章讲解的就是如何使用Support Library,然后继承Fragment类,同时保证你的APP能够在低版本运行。

       注意:如果由于其它原因,你决定你的APP的最低API 版本是11或者更高,你就不用使用Support Library,直接使用系统里面的Fragment 类和相关的API.但是请注意,这个文章讲的是使用Support Library里面的APIS,它有个特定的包签名,并且少量API名字跟机器本身的API名字不同。

 

创建一个片段类

       要创建一个片段类,就要继承Fragment类并复写它的关键的生命周期方法来插入你的APP 逻辑,跟创建一个活动类似。

       不同的是当创建一个Fragment时,你必须使用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,

        Bundle savedInstanceState) {

        // Inflate the layout for this fragment

        return inflater.inflate(R.layout.article_view, container, false);

    }

}

       跟活动一样,一个片段应该实现其它生命周期回调方法,这样才能在添加它,移除它,以及活动自己的生命周期状态切换时来管理片段自己的状态。例如当活动的onPause()方法被调用时,任何在这个活动中的片段都会调用各种的onPause()方法。

       更多关于片段生命周期和回调方法的讲解见片段开发指南。

 

使用XML将一个片段添加到活动中去

       由于片段是可以重复使用的,模块中的UI组件,片段类的各个实例都必须跟父片段活动相关联。你能够通过将片段定义在活动的布局XML文件里面来实现这种联系。

注意:片段活动(FragmentActivity)是一个特殊的活动,它因为有Support Library库的支持,可以在系统版本低于API  11的机器上处理片段。如果最低系统版本是11或者更高,你能直接使用活动(Activity)。

如下是一个当设备屏幕很大的时候的布局文件,它包含了两个片段(目录名字使用large限定词)。

res/layout-large/news_articles.xml:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 
    <fragmentandroid:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent"/>
 
    <fragmentandroid: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文件中定义片段时,在运行时,你不能移除这个片段。当你需要在用户交互的时候将片段换入或者换出时,你必须在活动第一次开始时来添加片段,详见下篇文章:创建活动的UI.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值