Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

Fragment的概念与使用(一)

$
0
0

Fragment的概念

       Fragment是Android honeycomb 3.0新增的概念,你可以将Fragment类比为Activity的一部分,它拥有自己的生命周期,接收自己的输入,你可以Activity运行的时加入或者移除Fragment.(或者我们也可以将Fragment类比为一个可以在不同的Activity中重用的子Activity。

    Fragment总是嵌入在Activity中,同时Fragment的生命周期受Activity影响,当Activity 暂停,所有在这个Activity中的Fragments将被释放。然而当一个Activity在运行比如resume时,你可以单独的操控每个Fragment。

如何创建一个Fragment

     创建Fragment时需要继承Fragment基类,并且重载关键的生命周期方法来加入你的应用逻辑,类似你创建Activity的方法

     Fragment与Activity不同的地方在于其必须通过onCreateView()来定义布局。事实上你只要定义这个回调方法就可以让Fragment运行起来。以下是一个示例:

  1. import android.os.Bundle;
  2. import android.support.v4.app.Fragment;
  3. import android.view.LayoutInflater;
  4. import android.view.ViewGroup;
  5. public class ArticleFragment extends Fragment {
  6.     @Override
  7.     public ViewonCreateView(LayoutInflater inflater, ViewGroup container,
  8.         BundlesavedInstanceState) {
  9.         // Inflatethe layout for this Fragment
  10.         returninflater.inflate(R.layout.article_view, container, false);
  11.     }
  12. }

       就像其他的Activity一样,Fragment应该事先其他的生命周期回调函数以便于控制其在Activity中的添加与移除,以及控制其本身在各个生命周期状态之间的迁移。当Fragment所在的Activity的onPause方法被调用,Fragment的onPause方法也应该被调用。

利用XML在Activity中添加一个Fragment

因为Fragment是可重用的,模块化的UI组件,任何一个Fragment的实例必须有继承自FragmentActivty父类。你可以通过将Fragment定义在Activity的布局XML文件中实现这一点。

注意:FragmentActivity是一个为支持API11以前的版本所提供特别的Activity。如果你支持的设备的版本高于API11,你可以直接使用Activity

以下是一个布局文件,实现了将两个Fragment添加到一个Activity中:

res/layout-large/news_articles.xml:

  1. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2.     android:orientation="horizontal"
  3.    android:layout_width="fill_parent"
  4.    android:layout_height="fill_parent">
  5.     <Fragmentandroid:name="com.example.android.Fragments.HeadlinesFragment"
  6.              android:id="@+id/headlines_Fragment"
  7.              android:layout_weight="1"
  8.              android:layout_width="0dp"
  9.              android:layout_height="match_parent" />
  10.     <Fragmentandroid:name="com.example.android.Fragments.ArticleFragment"
  11.              android:id="@+id/article_Fragment"
  12.               android:layout_weight="2"
  13.              android:layout_width="0dp"
  14.              android:layout_height="match_parent" />
  15. </LinearLayout>


以下是实现这个布局文件的Activity的实现:

  1. import android.os.Bundle;

  2. import android.support.v4.app.FragmentActivity;

  3. public class MainActivity extends FragmentActivity {

  4.     @Override

  5.     public voidonCreate(Bundle savedInstanceState) {

  6.        super.onCreate(savedInstanceState);

  7.        setContentView(R.layout.news_articles);

  8.     }

  9. }


注意:当你将一个Fragment通过布局文件添加到Activity中的的时候,你不能再运行时将Fragment移除。如果你需要通过用户的互动自由切入切出,你必须在Activity启动的时候添加Activity。

作者:kernel_learner 发表于2012-12-28 21:11:15 原文链接
阅读:42 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>