14 Fragment 碎片总结
Fragment 碎片
一, Fragment是什么?
Android 3.0以后出现的 Api11 以上 Activity的组成部分
Fragment(小的Activity)
Fragment可以显示 UI内容 可以和用户进行交互Fragment的主要作用:提高代码的重用性 和用户体验
可以对Activity组件 进行分组和模块化的管理Fragment 有自己的生命周期 可以接受和处理用户的事件
可以在Activity中 添加,替换和移除 Fragment注意:1,Fragment必须依附Activity
2,一个Activity可以包含多个Fragment,一个Fragment可以
被多个Activity使用
二, 如何创建Fragment
1,创建一个类继承Fragment
2,得到Fragment生命周期方法 onCreateView() (展示UI)三, Fragment 的显示方式
1,静态展示Fragmeng(在布局中直接添加Fragment)
1,在布局中标签
2,id Fragmeng的唯一标识
3,name 添加的是那个Fragmeng2,动态添加Fragment(在布局中添加一个容器,动态代码将Fragmeng添加到容器)
1,在布局中添加容器
2,在逻辑代码中 获取FragmengManage
3,通过Fragmeng的事务
4,Fragmeng的事务 将Fragmeng添加相应的容器
5,Fragment的事务 提交四,Activity向Fragment传值
Activity:(setArguments(bundle))
//传值 ActivityToFragment
Bundle bundle = new Bundle();
bundle.putString(“msg”, “今天开会”);
//传值
myFragment.setArguments(bundle);Fragment:(getArguments()
//获取传递过来的值
Bundle bundle = getArguments();
//获取值
String msg = bundle.getString(“msg”);五, Fragment 向Activity传值 (接口回调)
1,创建一个回调接口
2,在Activity中实例化回调接口
3,将实例化的接口传给Fragment (getActivity)
4,在Fagment中 将值传递给Activity六, Fragment向Fragment传值
1,setArgument()
//传值
MyFragment2 myFragment2 = MyFragment2.newInstance(bundle);MyFragment2 myFragment2 = new MyFragment2();
myFragment2.setArguments(bundle);
2,在Fragment1中找到Fragment2对象 通过对象调方法
通过Fragment的id 获取Fragment2的对象
Fragment2 fragment2 = (Fragment2) getFragmentManager().findFragmentById(R.id.rightfragment);
fragment2.setTextValues(msg);3,在Fragment1中找到Fragment2中的控件
TextView tv = (TextView) getFragmentManager().findFragmentById(R.id.rightfragment).getView().findViewById(R.id.tv_show);
TextView tv = (TextView) getActivity().findViewById(R.id.tv_show);
tv.setText(msg);- 七, Fragment的生命周期 11个生命周期方法
第一次打开app
09-08 06:05:55.590: E/MainActivity(3786): ==onCreate==
09-08 06:05:55.590: E/MyFragment(3786): ==onAttach==
09-08 06:05:55.590: E/MyFragment(3786): ==onCreate==
09-08 06:05:55.600: E/MyFragment(3786): ==onCreateView==
09-08 06:05:55.600: E/MyFragment(3786): ==onActivityCreated==
09-08 06:05:55.600: E/MainActivity(3786): ==onStart==
09-08 06:05:55.600: E/MyFragment(3786): ==onStart==
09-08 06:05:55.600: E/MainActivity(3786): ==onResume==
09-08 06:05:55.610: E/MyFragment(3786): ==onResume==
按Home键时
09-08 06:07:08.211: E/MyFragment(3786): ==onPause==
09-08 06:07:08.211: E/MainActivity(3786): ==onPause==
09-08 06:07:10.090: E/MyFragment(3786): ==onStop==
09-08 06:07:10.090: E/MainActivity(3786): ==onStop==
重新返回到界面
09-08 06:08:11.391: E/MainActivity(3786): ==onRestart==
09-08 06:08:11.391: E/MainActivity(3786): ==onStart==
09-08 06:08:11.391: E/MyFragment(3786): ==onStart==
09-08 06:08:11.391: E/MainActivity(3786): ==onResume==
09-08 06:08:11.411: E/MyFragment(3786): ==onResume==
按返回键时
09-08 06:09:12.440: E/MyFragment(3786): ==onPause==
09-08 06:09:12.440: E/MainActivity(3786): ==onPause==
09-08 06:09:14.110: E/MyFragment(3786): ==onStop==
09-08 06:09:14.110: E/MainActivity(3786): ==onStop==
09-08 06:09:14.110: E/MyFragment(3786): ==onDestroyView==
09-08 06:09:14.110: E/MyFragment(3786): ==onDestroy==
09-08 06:09:14.110: E/MyFragment(3786): ==onDetach==
09-08 06:09:14.110: E/MainActivity(3786): ==onDestroy==
八, V4包中的Fragment使用
V4支持Android1.6
使用;
- 1,创建一个类 继承V4包的Fragment
- 2,修改Activity 变成FragmentActivity
3,获取管理者对象 V4 getSupportFragmentManager() 获取事务 V4
- note:用V4的Fragment 全部改成V4的 用app包的 全部用app包
九, listFragment的使用
ListFragment 里面封装了 ListVIew : id为: android:id=”@id/android:list”
设置数据的方法 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
点击监听的方法 public void onListItemClick(ListView l, View v, int position, long id)
- 十,回退栈
.addToBackStack(null)//回退栈 参数:标记 如果没有标记 null
.commit()
案例
Day14_Fragment_demo1:静态注册
Day14_Fragment_demo2:动态注册
14 Fragment 碎片总结的更多相关文章
- 14 fragment 创建
静态展示 注意 静态的开始进入界面的生命周期和动态的不同 详情:14 fragment注意点 步骤一:创建一个类继承 Fragment 代码类型一: package com.fmy.demo1; im ...
- Fragment碎片
布局文件中添加碎片 1.在onCteate()方法中调用inflater.inflate()加载Fragment布局 2.在xml的<fragment>中需要显示指明碎片名称(androi ...
- Fragment碎片的创建和动态更新
Fragment,在平板应用中较为参见,把视图分为两个甚至多个模块. 一,一个简单的fragment 1.创建两个局部文件,用于等待被调用 (1)left_fragment (2)right_frag ...
- fragment 碎片整理
activity_m1.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...
- Android Fragment(碎片)的使用
简介 在Android中Fragment为一种可以嵌入活动中的UI片段.能让程序更加合理地利用大屏幕的空间. 使用方法 1.我们首先新建的一个onefragment.xml文件. <?xml v ...
- Android06-Fragment碎片
¨Fragment简介 ¨Fragment生命周期 ¨动态加载碎片Fragment Manager的使用 1.Fragment表示Activity中的一种行为或者一部分用户界面. 可以将Fragm ...
- Android Fragment碎片
什么是碎片? 碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛.可以把Fragment当成Activity一个界面的一 ...
- Android之Fragment(碎片)方方面面
Fragment简介碎片(Fragment)是一种可以嵌入到活动当中的UI片段,它能让程序更加合理和充分的利用大屏幕的空间. Fragment的生命周期 它与Activity生命周期的关系: 可以看到 ...
- android UI:Fragment碎片
碎片(Fragment) 嵌入与活动中的UI片段,为了合理的分配布局而存在,这是我的简单理解.多用于兼顾手机与平板的UI,也适用于灵活高级的UI制作. Demo 简单的按键切换两片不同的Demo 新建 ...
随机推荐
- POI SZP
贪心: 初始所有点为白色,对于点i,若a[i]为白色则将其染成与i不同的颜色. 证明:若点i确定为白色,a[i]染白色也只能提供一个黑点,故a[i]染黑色不会差:若所有指向i的点均为黑色,则i只能是白 ...
- [HNOI2009]有趣的数列
题目描述 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<...<a2n ...
- hdu 4638 树状数组 区间内连续区间的个数(尽可能长)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- Codeforces #Round 406(Div.2)
来自FallDream的博客,未经允许,请勿转载,谢谢. ------------------------------------------------------- 大家好,我是一个假人.在学习O ...
- ubuntu linux c学习笔记----共享内存(shmget,shmat,shmdt,shmctl)
shmget int shmget(key_t key, size_t size, int flag); key: 标识符的规则 size:共享存储段的字节数 flag:读写的权限 返回值:成功返回共 ...
- 如何在 vmware esxi 中开放 VNC功能及端口实现远程管理 完整篇
VMWare esxi中开放 VNC功能及端口实现远程管理 完整篇 在多个论坛上看了相关文章,总的写得不完整.现将各方资源整编写完整版.详文如下! (图片来自51CTO) 步骤1. 修改ESXi主机的 ...
- java中如何在代码中判断时间是否过了10秒
long previous = 0L; ... { Calendar c = Calendar.getInstance(); long now = c.getTimeInMillis(); //获取当 ...
- 9.QT-标准对话框
Qt提供的可复用的标准对话框,全部继承自QDialog类,如下图所示: QMessageBox:信息对话框,用于显示信息.询问问题等: QFileDialog:文件对话框 QColorDialog:颜 ...
- vue+cordova 构建hybrid app
配了一个 vue + cordova + ionicCli 的 项目 支持 ionic 的脚手架命令 支持 cordova 的 插件 安装使用 支持 webpack 的自动构建 vue 安装了 vue ...
- 简介JSP与FreeMarker及Volicity区别
FreeMarker FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个 ...