Fragment系列之----基础知识(一)
2016-11-07 17:43
369 查看
一 基础知识
(1)概念:
① 你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了
② 统一管理一部分布局
③ 版本兼容性:3.0时代
(2)
方法参数的额理解
① onAttach(Activity):当Fragment与Activity发生关联时调用。
② onCreateView(LayoutInflater, ViewGroup,Bundle):创建该Fragment的视图
③ onActivityCreated(Bundle):当Activity的onCreate方法返回时调用
④onDestoryView():与onCreateView想对应,当该Fragment的视图被移除时调用
⑤ onDetach():与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:① 除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现
② add
③ hide和show执行。不会执行任何的生命周期的函数
④ remove移除,editText有可以能会给加id的保存,但是不一定会有
在ViewGroup肚子里面加东西,会出现在多个界面
二 基础方法
(一)静态 fragment
(1)概念:把Fragment当成普通的控件,直接写在Activity的布局文件中
(2)创建步骤:(要嵌套3个界面在Activity)
① 第一:创建3个布局文件
② 第二:创建3个Fragment ,继承Fragment,重写onCreateView决定Fragemnt的布局
注意: onCreateView返回的就是显示在界面的视图
③ 第三: 在Activity布局文件中,加入如下的标签
④ 第四: MainActivity中应用Activity的布局文件就可以啦
(二) 动态fragment
(1) 概念: 动态的添加,删除,替换fragment页面
(2) 步骤:
① 创建3个布局文件
② 第二:创建3个Fragment ,继承Fragment,重写onCreateView决定Fragemnt的布局
③ Activity的布局文件中添加一个ViewGroup, (动态的添加。不要再里面静态的去写,不然每个界面都会有这个视图)
④ 初始化 Fragment 实例
FragmentManager fragmentManager
= this.getFragmentManager();
(3) 方法参数介绍
① Fragment家族常用的API
Fragment常用的三个类:
android.app.Fragment 主要用于定义Fragment
android.app.FragmentManager 主要用于在Activity中操作Fragment
android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~
② Fragment实现步骤
a、获取FragmentManage的方式:
getFragmentManager() // v4中,getSupportFragmentManager
b、主要的操作都是FragmentTransaction的方法
//开启一个事务
FragmentTransaction transaction = fm.benginTransatcion();
// 往Activity中添加一个Fragment
transaction.add()
// 从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。
transaction.remove()
// 使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体
transaction.replace()
// 隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
transaction.hide()
// 显示之前隐藏的Fragment
transaction.show()
// 会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。
detach()
// 重建view视图,附加到UI上并显示。
attach()
// 提交一个事务
transatcion.commit()
注: 如果使用Android3.0以下的版本,需要引入v4的包,然后Activity继承FragmentActivity,然后通过getSupportFragmentManager获得FragmentManager。不过还是建议版Menifest文件的uses-sdk的minSdkVersion和targetSdkVersion都改为11以上,这样就不必引入v4包了
(1)概念:
① 你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了
② 统一管理一部分布局
③ 版本兼容性:3.0时代
(2)
方法参数的额理解
① onAttach(Activity):当Fragment与Activity发生关联时调用。
② onCreateView(LayoutInflater, ViewGroup,Bundle):创建该Fragment的视图
③ onActivityCreated(Bundle):当Activity的onCreate方法返回时调用
④onDestoryView():与onCreateView想对应,当该Fragment的视图被移除时调用
⑤ onDetach():与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:① 除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现
② add
③ hide和show执行。不会执行任何的生命周期的函数
④ remove移除,editText有可以能会给加id的保存,但是不一定会有
在ViewGroup肚子里面加东西,会出现在多个界面
二 基础方法
(一)静态 fragment
(1)概念:把Fragment当成普通的控件,直接写在Activity的布局文件中
(2)创建步骤:(要嵌套3个界面在Activity)
① 第一:创建3个布局文件
② 第二:创建3个Fragment ,继承Fragment,重写onCreateView决定Fragemnt的布局
注意: onCreateView返回的就是显示在界面的视图
③ 第三: 在Activity布局文件中,加入如下的标签
<fragment android:id="@+id/des01" // 代表id android:name="com.example.myapplication.Fragment01" // 是不同的fragment返回视图类的名称,在layout中实例化的Fragment类 android:layout_width="match_parent" android:layout_height="100dp" android:layout_alignParentTop="true" />
④ 第四: MainActivity中应用Activity的布局文件就可以啦
(二) 动态fragment
(1) 概念: 动态的添加,删除,替换fragment页面
(2) 步骤:
① 创建3个布局文件
② 第二:创建3个Fragment ,继承Fragment,重写onCreateView决定Fragemnt的布局
③ Activity的布局文件中添加一个ViewGroup, (动态的添加。不要再里面静态的去写,不然每个界面都会有这个视图)
④ 初始化 Fragment 实例
private Fragment01 mFragment01 = new Fragment01(); private Fragment02 mFragment02 = new Fragment02(); private Fragment03 mFragment03 = new Fragment03();
⑤ 通过管理器的方式把Fragment加载ViewGroup
FragmentManager fragmentManager
= this.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.id.des, mFragment01, "1"); fragmentTransaction.commit();
(3) 方法参数介绍
① Fragment家族常用的API
Fragment常用的三个类:
android.app.Fragment 主要用于定义Fragment
android.app.FragmentManager 主要用于在Activity中操作Fragment
android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~
② Fragment实现步骤
a、获取FragmentManage的方式:
getFragmentManager() // v4中,getSupportFragmentManager
b、主要的操作都是FragmentTransaction的方法
//开启一个事务
FragmentTransaction transaction = fm.benginTransatcion();
// 往Activity中添加一个Fragment
transaction.add()
// 从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。
transaction.remove()
// 使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体
transaction.replace()
// 隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
transaction.hide()
// 显示之前隐藏的Fragment
transaction.show()
// 会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。
detach()
// 重建view视图,附加到UI上并显示。
attach()
// 提交一个事务
transatcion.commit()
注: 如果使用Android3.0以下的版本,需要引入v4的包,然后Activity继承FragmentActivity,然后通过getSupportFragmentManager获得FragmentManager。不过还是建议版Menifest文件的uses-sdk的minSdkVersion和targetSdkVersion都改为11以上,这样就不必引入v4包了
相关文章推荐
- Fragment 系列一<基础知识详解>
- 色彩系列教程(1):基础知识
- castle系列之一技术的基础知识
- 血液图谱系列-基础知识和准备工作
- LINUX下C语言入门系列课程-基础知识
- 色彩系列教程(1):基础知识
- 线程基础知识——Windows核心编程学习手札系列之六
- Smalltalk基础知识系列05:对象和消息之优先级
- 一步一步学Ruby系列(一):Ruby基础知识
- memcached系列之1:memcached基础知识简介(为什么要使用memcached做缓存服务器)
- [企业信息化大家学系列]ERP基础知识问答之BPR与ERP的关系
- C++ 人工智能算法系列一(神经网络算法基础知识)
- [基础知识]Linux新手系列之四
- [基础知识]Linux新手系列之五
- castle系列之一技术的基础知识
- [企业信息化大家学系列]ERP基础知识问答之ERP实施
- [基础知识]Linux新手系列之三
- LoadRunner性能测试实战读书笔记系列 之二 性能测试基础知识 占个位置
- memcached系列之1:memcached基础知识简介(为什么要使用memcached做缓存服务器)
- Smalltalk基础知识系列04:对象和消息之组合消息