一直知道Fragment非常强大。可是一直都没有去学习,如今有些空暇的时间,所以就去学习了一下Fragment的简单入门。我也会把自己的学习过程写下来,假设有什么不足的地方希望大牛指正,共同进步。

  一、Fragment简单介绍

    1.Fragment作为Activity界面的一部分组成出现;

    2.能够在一个Activity中同一时候出现多个Fragment,而且,一个Fragment亦可在多个Activity中使用;

    3.在Activity执行过程中,能够加入、移除或者替换Fragment(add()、remove()、replace());

    4.Fragment能够响应自己的输入事件,而且有自己的生命周期,当然。它们的生命周期直接被其所属的activity的生命周期影响。

    那我们为什么要用Fragment呢?主要目的是用在大屏幕设备上--比如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有很多其它的空间来放很多其它的UI组件,而且这些组件之间会产生很多其它的交互。我们能够把Fragment觉得是“小的Activity”。Fragment更加简洁。

  二、Fragment的简单使用

    那我们就简单的显示2个Fragment为例来解说一下。

    

    1.在XML中加入Fragment:

      新建Fragment1、Fragment2(注意:这里可能有2个包能够选择导入android.app.Fragment或android.support.v4.app.Fragment都是能够的,我这里选择使用了前者。可是两者使用时有差别的,在结尾中我会讲到):


      Fragment1代码:
package com.example.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import com.example.fragmentdemo.R; public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.e("TAG", "in");
return inflater.inflate(R.layout.fragment1, container, false);
}
}

      Fragment2代码:
package com.example.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import com.example.fragmentdemo.R; public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment2, container, false);
}
}

      Fragment1的xml代码:
<?

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="#FF69B4"
android:orientation="vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="这是第一个Fragment" /> </LinearLayout>

      Fragment2的xml代码:
<?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="#EECBAD"
android:orientation="vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="这是第二个Fragment" /> </LinearLayout>

      我们在activity_main.xml中加入两个Fragment。代码例如以下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false" > <fragment
android:id="@+id/fragment1"
android:name="com.example.fragment.Fragment1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1" /> <fragment
android:id="@+id/fragment2"
android:name="com.example.fragment.Fragment2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1" /> </LinearLayout>

      MainActivity代码例如以下:
package com.example.fragmentdemo;

import android.app.Activity;
import android.os.Bundle; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

      然后执行project就能够显示Fragment了。以下是效果图。

    

      

    2.动态加入Fragment:

      我们仅仅须要改动MainActivity和activity_main.xml中的代码就能够了。

      activity_main.xml代码:                 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="vertical" > <LinearLayout
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" /> </LinearLayout>

      MainActivity代码:
package com.example.fragmentdemo;

import android.app.Activity;
import android.os.Bundle; import com.example.fragment.Fragment1; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getFragmentManager().beginTransaction()
.replace(R.id.main, new Fragment1()).commit();
}
}

      然后执行project就能够动态的显示Fragment了,以下是效果图。

三、app包下和V4包下的Fragment的差别

1、尽量不要用app包中的fragment。由于这个是在3.0之后才有的,支持的版本号太高,在低版本号中是是用不了的;

    2、android.support.v4.app.Fragment:能够兼容到1.6的版本号。

    3、关于这两个fragment使用<fragment>标签的问题:

    (1)app.fragment和v4.fragment都是能够使用<fragment>标签的仅仅是在在使用的时候假设是app.fragment则没有什么特殊的地方继承Activity就可以。

    (2)当v4.fragment使用<fragment>标签的时候就要特别注意了:当这个Activity的布局中有<fragment>标签的时候,这个Activity必须继承FragmentActivity,否则就会报错。

此时假设不卜继成FragmentActivity的话
编译系统会把<fragment>觉得是app包中的Fragment来处理。可是此时我们导入的是v4包中的FragmentAndroid官方文档中的Fragment的样例就是以app包中的Fragment来解说的。

            (3)app包中关于Fragment的类和方法在V4包中都是有相应的相应的。

    转载自:http://blog.csdn.net/a465456465/article/details/10415211,感谢。

    上面就是Fragment的简单用法,Demo下载,下一节我会讲Fragment的具体使用。欢迎关注。我的博客园地址:http://www.cnblogs.com/getherBlog/p/3943547.html

【Android发展】它Fragment发展1的更多相关文章

  1. Android开发环境的发展演变调研

    Android开发环境的发展演变调研 前几年比较多的方法是用JDK+eclipse+ADT,该方法除了要配置JDK的路径之外, 还要在eclipse里面打开SDK Manage进行相应的操作.不过近两 ...

  2. android开发中fragment获取context

    在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationCont ...

  3. Android Activity和Fragment的转场动画

    Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...

  4. Android 动态创建Fragment

    Fragment是activity的界面中的一部分或一种行为.可以把多个Fragment组合到一个activity中来创建一个多界面并且可以在多个activity中重用一个Fragment.可以把Fr ...

  5. Android碎片(Fragment)简述

    碎片(Fragment)是一种可以嵌入活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因此碎片在平板上的应用非常广泛. 你可以将碎片理解成一个迷你型的活动,水平同样可能包含布局,同样都 ...

  6. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  7. Android系列之Fragment(四)----ListFragment的使用

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  9. Android系列之Fragment(二)----Fragment的生命周期和返回栈

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

随机推荐

  1. JavaScript对象的创建

    原文 简书原文:https://www.jianshu.com/p/6cb1e7b7e379 大纲 前言 1.简单方式创建对象的方法 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对 ...

  2. python 升级pip

    废话少说,直接上图,希望谅解我的懒惰!:)

  3. java的对象锁和对象传递

    1.对象传递 在JAVA的參数传递中,有两种类型,第一种是基本类型传递,比如int,float,double等,这样的是值传递,第二种是对象传递,比方String或者自己定义的类,这样的是引用传递. ...

  4. .net下载优酷1080P视频

    事实上流程大致是:调用飞驴下载API+js解析+文件下载+调用flvBind合并这样一个流程而已_(:з」∠)_ 貌似是不用太多的说明..嗯.. 起先的需求是从优酷上下载一些视频 只是网络上的各种软件 ...

  5. 【u015】兽径管理

    [问题描述] 约翰农场的牛群希望能够在 N 个(1<=N<=200)草地之间任意移动.草地的编号由 1到N.草地之间有树林隔开.牛群希望能够选择草地间的路径,使牛群能够从任一 片草地移动到 ...

  6. xCode中怎样保存自己的代码块

    在开发iOS的过程中.xCode肯定是用得最多的工具.没有之中的一个.由于苹果官方提供的就这一个平台,尽管没有竞争对手,但秉承苹果一贯的注重细节的原则,xCode还是一款相当不错的IDE. 作为一名i ...

  7. Oracle数据库零散知识03

    21,存储过程,简化复杂操作,增加数据独立性,提高安全性,提高性能 与函数创建对比: create or replace function fun_01(v_01 in number) return ...

  8. 电子商务系统的设计与实现(七):前后端系统UI设计的一些思考

    对于大部分开发者来说,写界面是最烦人的事.我想,开发者最初诞生,以及我们在大学学习的时候,更加侧重的是程序设计和逻辑思维,而不是界面.界面更象是艺术,艺术和程序设计是两回事. 我个人还是想成为全栈式开 ...

  9. 自动化部署脚本,给每一台主机装上JDK,且配好环境变量

    centos6.7 当我们有很多台主机,想在每台机器上都安装一样的某些软件,当然,一台机器一台机器安装也是可以的,但是如果有一键安装所有机器上的软件那是不是很激动人心呢! 首先我们需要制作一台服务器, ...

  10. 汉高澳大利亚matrix矩阵计算器

    我在梦中的超级计算机超级计算机锯,使用大量阵列的cpu记忆,完成并行计算.一个手机制造商由于使用普通机械提供的服务,往往造成停机.是铁道部列车网络售票的事实. 无法使用云服务.上万台计算机并行处理,因 ...