(一)Android在3.0中引入了Fragment的概念,主要目的是用在大屏幕设备上—例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机大的多,有更多的空间放更多的UI组件,并且这些组件之间会产生更多的交互

(二)Fragment在你的应用中应当是一个模块化和可重用的组件,因为Fragment定义了他自己的布局,以及通过使用他自己的生命周期回调方法定义了他自己的行为,你可以将Fragment包含到多个activity中

(三)【Fragment知识概要】

(1)Fragment可以作为Activity界面的一部分组成出现

(2)可以在一个activity同时多个Fragment,并且一个Fragment可以运行在多个activity中使用

(3)在activity运行过程中,可以添加、移除、替换Fragment

(4)Fragment可以响应自己的输入事件,并且有自己的生命周期,他们的生命周期会受宿主activity的生命周期的影响

-------------------------------------------------------------------

(四)Fragment的加载方式

(1)静态加载

在activity的layout文件中声明Fragment,需要特别注意的是<Fragment>中的Android:name属性指定了在layout中实例化的Fragment类

--à标示Fragment的方法

Android:id属性提供一个唯一的ID

Android:tag属性提供一个唯一字符串

Eg:

//实现布局文件中包含<fragment>,<fragment>的name为一个类,类中的将另外一个含有控件 的布局转换成View对象,将View对象-à之前的布局文件中的操作(关键词:静态加载)

1. 在layout创建一个main,在main中存放Fragment.xml

(ps:Fragment含有id,width,height,name)

2. 在layout创建一个fragment_kongjian.xml,含有组件(TextView,Button)

3. 创建fragment.java,创建方法:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

4. 将Layout布局文件转换成View对象

View view = inflater.inflate(R.layout.fragment_kongjian, container, false)

Ps(resource:Fragment需要加载的布局文件

root:加载layout的父ViewGroup;

attactToRoot:false,不返回父ViewGroup)

5. 初始化fragment_kongjian.xml中的空间

TextView text=(TextView) view.findViewById(R.id.text);

Button button=(Button) view.findViewById(R.id.button)

6. 操作略

7. 在MainActivity.java中创建intent,当按钮点击后跳转到SecondActivity.java,SecondActivity.java含有一个onCreate方法,为打开main布局—>1.main.xm

8. Main.xml中的frame的布局的name:Fragment.java的具体位置

------------------------------------------------------------------

(2)动态加载

撰写代码将Fragment添加到一个Activity Layout中

add():添加一个Fragment(指定要添加的Fragment和插入的View)

与此类似的还有remove()/replace()

*处理Fragment事务

根据用户的交互情况,对Fragment进行添加、移除、替换、以及执行其他操作,提交给Activity的每一套变化被称作一个事务

FragmentManager fragmentManager==getFragmentManager();

FragmentTransaction beginTransaction= fragmentManager.beginTransaction();

Eg:

实现步骤:

1. Fragment fragment=new fragment();

//这个Fragment为含有View对象的Fragment.java

2. ps:以事务的方式进行操作

FragmentManager fragmentManager==getFragmentManager();

FragmentTransaction beginTransaction= fragmentManager.beginTransaction();

beginTransaction.add(“R.id.frame”[s1] ,frameManager[s2] );

beginTransaction.addToBackStack[s3] (null);

beginTransaction.commit();//提交事务

-----------------------------------------------------------------------

PS:每一个事务都是同时执行一套变化,可以在一个事务中设置你所有想执行的变化,包括add(),remove(),replace(),然后提交给Activity,必须调用commit()方法-à与数据库的事务提交方法相同

如果允许用户通过按下BACK按键返回到前一个Fragment状态,调用commit()之前可以加入addToBackStack()方法

-----------------------------------------------------------------------


[s1]一个LinearLayout

[s2]含有控件的View对象,为当期的FragmentManager.java

[s3]加入物理返回按键,返回上一个界面

Android成长日记-Fragment的更多相关文章

  1. Android成长日记-Fragment的生命周期与Activity通信

    1. public void onAttach(Activity activity) 当Fragment被添加到Activity时候会回调这个方法,并且这个方法只会被回调一次 2. public vo ...

  2. Android成长日记-Android四大组件之Service组件的学习

    1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...

  3. Android成长日记-数据存储之SQLite[1]

    [SQLite简介] SQLite是R.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行 ---支持高达2TB大小的数据库: ...

  4. Android成长日记-五大布局

    1. 五布局之线性布局LinearLayout 特点:它包含的子控件将以横向或竖向的方式排列 ps:android:gravity=”center|bottom”(gravity允许多级联用) Tip ...

  5. Android成长日记-数据存储之SharedPreferences

    数据篇-SharedPreferences Android的四种存储方式 1. SharedPreferences 2. SQLite 3. Content Provider 4. File ---- ...

  6. Android成长日记-使用ViewFlipper实现屏幕切换动画效果

    (一) ViewFlipper介绍 Android系统自带的一个多页面管理控件,它可以实现子界面的自动切换 (二) 为ViewFlipper加入View 1. 静态导入:在Layout布局文件中直接导 ...

  7. Android成长日记-使用ToggleButton实现灯的开关

    案例演示 此案例实现思路:通过ToggleButton控件,ImageView控件实现 ---xml代码: <!-- textOn:true textOff:falase[s1] --> ...

  8. Android成长日记-使用PagerAdapter实现页面切换

    Tip:此方式可以实现页面切换 1. 创建view1.xml,view2.xml,view3.xml,main.xml 在main.xml中创建 <android.support.v4.view ...

  9. Android成长日记-使用Intent实现页面跳转

    Intent:可以理解为信使(意图),由Intent来协助完成Android各个组件之间的通讯 Intent实现页面之间的跳转 1->startActivity(intent) 2->st ...

随机推荐

  1. usb驱动开发18之设备生命线

    现在已经使用GET_DESCRIPTOR请求取到了包含一个配置里所有相关描述符内容的一堆数据,这些数据是raw的,即原始的,所有数据不管是配置描述符.接口描述符还是端点描述符都挤在一起,所以得想办法将 ...

  2. [py]shell着色

    print "\033[32;1myou are 30 older and little than 40\033[0m"

  3. c#:Reflector+Reflexil 修改编译后的dll/exe文件

    不知道大家有没有这样的经历:现场实施时测试出一个bug,明明知道某个dll/exe文件只要修改一二行代码即可,但手头没有开发环境,紧急情况下,可以用reflector + reflexil 临时直接修 ...

  4. tkinter 类继承的三种方式

    tkinter class继承有三种方式. 提醒注意这几种继承的运行方式 一.继承 object 1.铺tk.Frame给parent: 说明: self.rootframe = tk.Frame(p ...

  5. 浅谈设计模式--组合模式(Composite Pattern)

    组合模式(Composite Pattern) 组合模式,有时候又叫部分-整体结构(part-whole hierarchy),使得用户对单个对象和对一组对象的使用具有一致性.简单来说,就是可以像使用 ...

  6. swift——uiwebview的使用

    首先,创建一个label: agreeDeal = UILabel() let tap = UITapGestureRecognizer.init(target: self, action: #sel ...

  7. unix环境高级编程基础知识之第一篇

    陆陆续续看完了圣经第一章,熟悉了unix的整个编程流程,c语言的用处在这里得到伸张. 从unix的体系结构,原来操作系统包括内核及一些其他软件,我们常常误称为linux内核为操作系统,这俨然成为一种共 ...

  8. java并发:简单面试问题集锦

    多线程:Simultaneous Multithreading,简称SMT. 并行.并发 并行性(parallelism)指两个或两个以上的事件在同一时刻发生,在多道程序环境下,并行性使多个程序同一时 ...

  9. sqlserver查询所有表名、字段名、类型、长度和存储过程、视图的创建语句

    -- 获得存储过程创建语句 select o.xtype,o.name,cm.text from syscomments cm inner join sysobjects o on o.id=cm.i ...

  10. 隐马尔可夫模型(Hidden Markov Model,HMM)

    介绍 崔晓源 翻译 我们通常都习惯寻找一个事物在一段时间里的变化规律.在很多领域我们都希望找到这个规律,比如计算机中的指令顺序,句子中的词顺序和语音中的词顺序等等.一个最适用的例子就是天气的预测. 首 ...