Android--Fragment基本介绍

Posted ljbguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android--Fragment基本介绍相关的知识,希望对你有一定的参考价值。

android是在Android 3.0 (API level 11)開始引入Fragment的。

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

  能够把Fragment设计成能够在多个Activity中复用的模块。

  当开发的应用程序同一时候适用于平板电脑和手机时,能够利用Fragment实现灵活的布局,改善用户体验。

  如图:

 

 

 

Fragment的生命周期

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

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

  可是,当Activity在活动状态,能够独立控制Fragment的状态,比方加上或者移除Fragment。

  当这样进行fragment transaction(转换)的时候,能够把fragment放入Activity的back stack中。这样用户就能够进行返回操作。

 

 

能够看到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"?

    >  

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  <

    以上是关于Android--Fragment基本介绍的主要内容,如果未能解决你的问题,请参考以下文章

    转Android Fragment 基本介绍--不错

    Android--Fragment基本介绍

    Android自学日记Android Fragment 真正的完全解析(下)

    Android Fragment 真正的完全解析(下)

    Android Fragment使用小结及介绍

    Android:Fragment与Activity之间的通信方式简单介绍