Android之Fragment静态实现实例

Fragment是作为Activity的UI的一部分,它内嵌在Activity中,多个Fragment可以把一个Activity分成多个部分,这在大屏幕手机或者平板电脑中会比较多的用到,这样就不用使用多个Activity来切换这么麻烦了。当然Fragment也可以不显示,只在后台处理一些数据,这篇文章中就暂时不谈到这个。以下来看怎么静态地在Activity的布局文件中添加Fragment.

  自定义的Fragment通常要继承Fragment这个类,也有一些特殊的是继承ListFragment,DialogFragment等。继承Fragment类通常要实现三个方法:onCreate(), onCreateView(), onPause();

  我在Activity中定义了两个Fragment,一个是放在左边的LeftFragment,一个是放在右边的RightFragment.以下是代码:首先我们要实现自己的Fragment类

LeftFragment类

public class LeftFragment extends Fragment
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        System.out.println("LeftFragment onCreate");
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        System.out.println("LeftFragment onCreateView");
        // 第一个参数是这个Fragment将要显示的界面布局,第二个参数是这个Fragment所属的Activity,第三个参数是决定此fragment是否附属于Activity
        return inflater.inflate(R.layout.leftfragment, container, true);
    }

    @Override
    public void onResume()
    {
        super.onResume();
        System.out.println("LeftFragment onResume");
    }

    @Override
    public void onPause()
    {
        super.onPause();
        System.out.println("LeftFragment onPause");
    }

    @Override
    public void onStop()
    {
        super.onStop();
        System.out.println("LeftFragment onStop");
    }
}

这里实现了几种回调函数,主要是为了看清Activity和Fragment生命周期之间的关系.其中onCreateView()方法是将本Fragment对应的布局返回给Activity的布局,让Activity进行加载. inflater.inflate(R.layout.leftfragment, container, true)方法中的第一个参数R.layout.leftfragment是这个Fragment对应的布局文件ID, 第二个参数container是要插入的目标Activity, 第三个参数是决定这个Fragment是否依附于这个container.

LeftFragment对应的布局文件:

 <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
     android:layout_height="match_parent"
      android:background="@android:color/holo_orange_dark"
      android:orientation="vertical" >

      <Button
  android:id="@+id/previous_button"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/previous_button" />

     <Button
 android:id="@+id/next_button"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/next_button" />

     <Button
 android:id="@+id/exit_button"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:text="@string/exit_button" />

 </LinearLayout>

RightFragment类:和LeftFragment类似

public class RightFragment extends Fragment
  {
      @Override
      public void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
          System.out.println("RightFragment onCreate");
      }

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
     {
         System.out.println("RightFragment onCreateView");
         return inflater.inflate(R.layout.rightfragment, container, true);
    }

     @Override
     public void onResume()
    {
        super.onResume();
         System.out.println("RightFragment onResume");
     }

     @Override
     public void onPause()
     {
         super.onPause();
         System.out.println("RightFragment onPause");
    }

     @Override
     public void onStop()
     {
         super.onStop();
         System.out.println("RightFragment onStop");
     }
 }

RightFragment对应的布局文件:

<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" >

      <TextView
  android:id="@+id/show_message"
          android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:background="@android:color/holo_blue_dark"
         android:text="@string/show_message" />

 </LinearLayout>

最后是Activity的布局文件:

<?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="horizontal" >
 6
 7     <fragment
 8 android:id="@+id/left_fragment"
 9         android:name="com.sunflower.LeftFragment"
10         android:layout_width="match_parent"
11         android:layout_height="fill_parent"
12         android:layout_weight="3" />
13
14     <fragment
15 android:id="@+id/right_fragment"
16         android:name="com.sunflower.RightFragment"
17         android:layout_width="match_parent"
18         android:layout_height="fill_parent"
19         android:layout_weight="1" />
20
</LinearLayout>

在Activity中的布局文件中加入Fragment标签,其中android:name属性对应的就是自定义Fragment类的全名,系统会根据这个调用指定的Fragment的onCreateView()方法来得到这个Fragment的布局,然后加入Activity中. onCreateView()方法中的Container参数就是这时候传递过去的。

看看显示结果:



打开程序时生命周期显示:


按返回键时生命周期显示:

时间: 2024-08-10 23:30:32

Android之Fragment静态实现实例的相关文章

Android碎片Fragment总结

一.Fragment的相关概念 (一)Fragment的基础知识 Fragment是Android3.0新增的概念,中文意思是碎片,它与Activity十分相似,用来在一个 Activity中描述一些行为或一部分用户界面.使用多个Fragment可以在一个单独的Activity中建 立多个UI面板,也可以在多个Activity中使用Fragment. Fragment拥有自己的生命 周期和接收.处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了.更为 重要的是,你可以动态的

Android入门——Fragment详解之基本概念与用法(一)

引言 Android在3.0中引入了Fragments的概念,其目的是用在大屏幕设备上–例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment允许这样的一种设计,而不需要你亲自来管理 Viewhierarchy的复杂变化. 通过将Activity的布局分散到Fragment中, 你可以在运行时修改Activity的外观,并在由Activity管理的back stack中保存那些变化. 一.F

android学习八(android碎片fragment的使用)

碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用屏幕的空间.首先建立一个平板的模拟器1034*600,环境使用android4.2.2.在建立一个android的项目,项目名为FragmentTest. 碎片的简单使用 新建一个左侧碎片布局left_fragment.xml代码如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr

android基础----&gt;Fragment的使用

碎片(Fragment)是一种可以嵌入在活动当中的UI 片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛. Fragment的基础例子 一.增加Fragment,another_right_fragment.xml文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

Android之Fragment用法

本文翻译自Android developer网站上面,原文参考:Building a Dynamic UI with Fragments 当我们需要动态的多界面切换的时候,就需要将UI元素和Activity融合成一个模块.在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变.在4.0或以上系统中就可以使用新的特性来方便的达到这个效果--Fragment类.Fragment类似一个嵌套Activity,可以定义自己的layout和自己的生命周期. 多个Fragm

android之Fragment基础详解(一)

一.Fragment的设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互. 针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的.难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊.Fragment的出现就是为了解决这样的问题.你可以把Frag

Android ViewPager Fragment使用懒加载提升性能

?? Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Android ViewPager内在的加载机制,导致一个比较严重的加载性能问题,具体来说,假设一个ViewPager中有n多个Fragment,那么ViewPager在初始化阶段将一次性的初始化FragmentPagerAdapter中的至少3个Fragment(如果Fragment多于3),创建和加载Fra

[转]Android:Activity+Fragment及它们之间的数据交换(一)

2014-05-18         来源:Android:Activity+Fragment及它们之间的数据交换(一)   简介: 为什么要用Fragment?使用Fragment可以在一个Activity中实现不同的界面.Fragment与 Fragment之间的动画切换,远比Activity与Activity之间的动画切换变化方式多.很多时候,我们通过使用一个Activity,切换 多个Fragment.本次博客,主要列举一下Fragment与它的Activity之间进行数据交换的方式.

android中fragment和activity之间相互通信

在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信.下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法. 1. activity 向fragment发出通信,就这么写: private OnMainListener mainListener; // 绑定接口 @Override public void onAttachFragment(Fragmentfragment) { try { mainListener =