Android--Fragment基本介绍

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Android--Fragment基本介绍相关的知识,希望能为你提供帮助。
android是在Android 3.0 (API level 11)開始引入Fragment的。

能够把Fragment想成Activity中的模块,这个模块有自己的布局。有自己的生命周期,单独处理自己的输入,在Activity执行的时候能够载入或者移除Fragment模块。

能够把Fragment设计成能够在多个Activity中复用的模块。
当开发的应用程序同一时候适用于平板电脑和手机时,能够利用Fragment实现灵活的布局,改善用户体验。
如图:
 

Android--Fragment基本介绍

文章图片

 
 
Fragment的生命周期由于Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。

假设Activity是暂停状态,当中全部的Fragment都是暂停状态;假设Activity是stopped状态。这个Activity中全部的Fragment都不能被启动。假设Activity被销毁,那么它当中的全部Fragment都会被销毁。

可是,当Activity在活动状态,能够独立控制Fragment的状态,比方加上或者移除Fragment。
当这样进行fragment transaction(转换)的时候,能够把fragment放入Activity的back stack中。这样用户就能够进行返回操作。
 
Android--Fragment基本介绍

文章图片

 
能够看到Fragment比Activity多了几个额外的生命周期回调方法:
onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想相应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相相应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其它的全部方法假设你重写了。必须调用父类对于该方法的实现,
3、静态的使用Fragment嘿嘿。最终到使用的时刻了~~
这是使用Fragment最简单的一种方式。把Fragment当成普通的控件。直接写在Activity的布局文件里。
步骤:
1、继承Fragment,重写onCreateView决定Fragemnt的布局
2、在Activity中声明此Fragment。就当和普通的View一样
以下展示一个样例(我使用2个Fragment作为Activity的布局,一个Fragment用于标题布局,一个Fragment用于内容布局):
TitleFragment的布局文件:

[html]  view plain  copy
  1. < ?xml  version="1.0"  encoding="utf-8"?>    
  2. < RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"   
  3.         android:layout_width="match_parent"   
  4.         android:layout_height="45dp"   
  5.         android:background="@drawable/title_bar"  >    
  6.    
  7.         < ImageButton   
  8.                 android:id="@+id/id_title_left_btn"   
  9.                 android:layout_width="wrap_content"   
  10.                 android:layout_height="wrap_content"   
  11.                 android:layout_centerVertical="true"   
  12.                 android:layout_marginLeft="3dp"   
  13.                 android:background="@drawable/showleft_selector"  />    
  14.    
  15.         < TextView   
  16.                 android:layout_width="fill_parent"   
  17.                 android:layout_height="fill_parent"   
  18.                 android:gravity="center"   
  19.                 android:text="我不是微信"   
  20.                 android:textColor="#fff"   
  21.                 android:textSize="20sp"   
  22.                 android:textStyle="bold"  />    
  23.    
  24. < /RelativeLayout>    

TitleFragment

[java]  view plain  copy
  1. package  com.zhy.zhy_fragments;    
  2.    
  3. import  android.app.Fragment;    
  4. import  android.os.Bundle;    
  5. import  android.view.LayoutInflater;    
  6. import  android.view.View;    
  7. import  android.view.View.OnClickListener;    
  8. import  android.view.ViewGroup;    
  9. import  android.widget.ImageButton;    
  10. import  android.widget.Toast;    
  11.    
  12. public  class  TitleFragment  extends  Fragment   
  13. {   
  14.    
  15.         private  ImageButton  mLeftMenu;    
  16.    
  17.         @Override   
  18.         public  View  onCreateView(LayoutInflater  inflater,  ViewGroup  container,   
  19.                         Bundle  savedInstanceState)   
  20.         {   
  21.                 View  view  =  inflater.inflate(R.layout.fragment_title,  container,  false);    
  22.                 mLeftMenu  =  (ImageButton)  view.findViewById(R.id.id_title_left_btn);    
  23.                 mLeftMenu.setOnClickListener(new  OnClickListener()   
  24.                 {   
  25.                         @Override   
  26.                         public  void  onClick(View  v)   
  27.                         {   
  28.                                 Toast.makeText(getActivity(),   
  29.                                                 "i  am  an  ImageButton  in  TitleFragment  !  ",   
  30.                                                 Toast.LENGTH_SHORT).show();    
  31.                         }   
  32.                 });    
  33.                 return  view;    
  34.         }   
  35. }   

同理还有ContentFragment的其布局文件:

[html]  view plain  copy
  1. < ?xml  version="1.0"  encoding="utf-8"?
    【Android--Fragment基本介绍】>    
  2. < LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"   
  3.         android:layout_width="match_parent"   
  4.         android:layout_height="match_parent"    <

      推荐阅读