Android -- Fragment注意事项
ViewPager+Fragment
让Fragment成为ViewPager的一页时,FragmentManager会一直保存管理创建好了的Fragment,即使当前不是显示的这一页,Fragment对象也不会被销毁,在后台默默等待重新显示。但如果Fragment不再可见时,它的视图层次会被销毁掉,下次显示时视图会重新创建。
出于使用FragmentPagerAdapter 时,Fragment对象会一直存留在内存中,所以当有大量的显示页时,就不适合用FragmentPagerAdapter 了,FragmentPagerAdapter 适用于只有少数的page情况,像选项卡。这个时候你可以考虑使用FragmentStatePagerAdapter ,当使用FragmentStatePagerAdapter 时,如果Fragment不显示,那么Fragment对象会被销毁,但在回调onDestroy()方法之前会回调onSaveInstanceState(Bundle outState)方法来保存Fragment的状态,下次Fragment显示时通过onCreate(Bundle savedInstanceState)把存储的状态值取出来,FragmentStatePagerAdapter 比较适合页面比较多的情况,像一个页面的ListView。
动画
1 FragmentTransaction ft = getFragmentManager().beginTransaction(); 2 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 3 ft.replace(R.id.details, detail); 4 ft.addToBackStack(null); 5 ft.commit();
代码设置的fade(渐变)效果。
1 FragmentTransaction ft = getFragmentManager().beginTransaction(); 2 //setCustomAnimations()必须位于replace()之前,否则效果不起所中。它的两个参数分别为enter,exit的效果。系统目前提供两个效果,分别为android.R.animator.fade_in和android.R.animator.fade_out 3 ft.setCustomAnimations(R.animator.slide_in_left,R.animator.slide_out_right); 4 ft.addToBackStack(null); 5 ft.replace(R.id.details,"detail"); 6 ft.commit();
利用setCustomAnimations()
无参构造函数&传参数
fragment一定要有一个无参构造函数,如果要给fragment传参,一定要使用Bundle方式传参,而不重载构造函数传参,因为在fragment重新生成的使用不会执行这个带参构造函数,而是执行无参构造函数。
1 public static VechileFrag newInstance(Vehicle vehicle, String userId, boolean isAdd) { 2 VechileFrag mf = new VechileFrag(); 3 Bundle args = new Bundle(); 4 args.putString("userId", userId); 5 args.putBoolean("isAdd", isAdd); 6 args.putParcelable("vehicle", vehicle); 7 mf.setArguments(args); 8 return mf; 9 } 10 11 12 @Override 13 public void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 Bundle args = getArguments(); 16 if (args != null) { 17 userId = args.getString("userId"); 18 isAdd = args.getBoolean("isAdd"); 19 vehicle = args.getParcelable("vehicle"); 20 if (vehicle == null) { 21 vehicle = new Vehicle(); 22 } 23 } 24 }
Menu
1 @Override 2 public void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setHasOptionsMenu(true); 5 }
这样之后,就可以调用onCreateOptionsMenu了。
保存Fragment的切换
Fragment fragment = fragments.get(i); if(!fragment.isAdded()) {if(currentIndex!=-1)fragments.get(currentIndex).onPause();ft = fm.beginTransaction();ft.setTransition(android.support.v4.app.FragmentTransaction.TRANSIT_FRAGMENT_FADE);ft.add(R.id.framelayout,fragment);// ft.addToBackStack(null); ft.commit();currentIndex=i; } else {ft = fm.beginTransaction();fragments.get(currentIndex).onPause();ft.setTransition(android.support.v4.app.FragmentTransaction.TRANSIT_FRAGMENT_FADE);ft.hide(fragments.get(currentIndex));ft.show(fragments.get(i));fragments.get(i).onStart();ft.commit();currentIndex=i; }
我是天王盖地虎的分割线
本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/4075062.html,如需转载请自行联系原作者
相关文章:

C#编码标准--编码习惯
1. 避免将多个类放在一个文件里面。 2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。 3. 一个文件最好不要超过500行的代码(不包括机器产生的代码)。 4. 一个方法的代码长度最好不要超过25行。 5. 避免方法中有超过…

官宣!《新程序员·开发者黄金十年》正式发布
“在互联网还不发达的时代,就是《程序员》伴我成长的。”“怀念啊,曾经《程序员》的日子。”“我是看着《程序员》长大的,大二时买了创刊号。”“这可是我们这一代人大学时候满满的回忆,也是当时寝室中传阅最多的书。”“每年的《…

java笔记(一)
2019独角兽企业重金招聘Python工程师标准>>> java数组是静态的,即数组被初始化后,其所占内存空间、数组长度是不可变的。初始化数组有静态初始化和动态初始化两种: public class ArrayTest {//以下是数组的两种静态初始化String[]…

遮罩效果的实现
很多时候我们需要用到遮罩弹出层效果,下面给出一个简单的遮罩demo; 效果演示 demo代码 注意引入jquery <html> <head> <meta charset"utf-8"> <title>遮罩</title><script srcjquery-1.8.3.min.js></s…

C#实现汉字转化为拼音
其实现的原理就是先将汉字转化成为内码,然后通过内码和拼音的对照来查找。 详细的代码如下所示: public class chs2py {private static int[] pyvaluenew int[]{-20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036,…

c基础知识复习
C的发展历程 C原本是为了开发UNIX操作系统而设计的语言;如此说,应该C比UNIX更早问世,而事实并非如此,最早的UNIX是由汇编写的; C语言本来是美国人开发的,解读C的声明,最好还是用英语来读&#x…

训练 GPT-3,为什么原有的深度学习框架吃不消?
本文梳理了深度学习框架在支持大规模预训练模型时面临的技术挑战,以及当前各类框架的基本解决思路,帮助算法工程师对业界各类框架的分布式训练能力有更清晰的认知。作者 | 一流科技CEO袁进辉头图 | 下载于ICphoto近年来,深度学习被广泛应用到…

ImageMagick简单记录
一、安装 mac下的安装非常简单 brew search ImageMagick brew install xxx 安装后,可验证 magick logo: logo.gif identify logo.gif display logo.gif 更多安装方式参考:http://www.imagemagick.org/script/download.php 二、命令介绍 命令概览convert&…

低代码、RPA 和 AI,有什么区别
来源 | LowCode低码时代头图 | 下载于视觉中国在To B领域,低代码、RPA和AI可谓是“流量担当”,它们自带To B基因,搭载快速发展的企业服务赛道,在企业级IT服务这一细分市场崭露头角。以这三者为代表的前沿理念和科技引领IT产业升级…

C# 获取 IE 临时文件
大家知道,在我们访问一个网站的时候。系统会把这个网站上的图片,动画等内容全部缓存到Internet临时文件夹中。 我们可以通过 <Drives>:/Documents and Settings/<user>/Local Settings/Temporary Internet Files访问。但是可能我们都没有想…

wifidog接口文档(转)
目录(?)[-] 网关心跳协议 请求信息 回复格式 例子用户状态心跳协议 请求格式 注意 回复格式 状态码 例子跳转协议 请求格式 例子注册协议 请求格式 例子wifidog是搭建无线热点认证系统的解决方案之一,他比nocat更适合互联网营销思路。目前支持openwrt系统ÿ…

Oracle XQuery 过滤XML查询SQL
Oralce 支持SQL XQuery查询 一个简单示例: SELECT XMLQuery(for $i in /Videogame return $i/Type passing by value X RETURNING CONTENT) FROM (SELECT XMLTYPE(<Videogame><Type>Racing</Type><Name>NFS Most Wanted</Name><…

C#2.0匿名函数
C# 2.0中提供了通过delegate实现匿名函数功能,能有效地减少用户记代码工作,例如 以下为引用: ... button1.Click new EventHandler(button1_Click); ... void button1_Click(Object sender, EventArgs e) { // Do something, the button…

第三届北京智源大会开幕,全球最大智能模型“悟道2.0”重磅发布
6月1日,由北京智源人工智能研究院(以下简称智源研究院)主办的2021北京智源大会在北京中关村国家自主创新示范区会议中心成功开幕。 北京智源大会是智源研究院主办的年度国际性人工智能高端学术交流活动,定位于“AI内行顶级盛会”…

Cloneable接口和循环冗余校验算法
1 Cloneable 接口 实现该接口的类可以调用clone()方法合法地对该类实例进行按字段复制。按照惯例,实现此接口的类应该使用公共方法重写 Object.clone(它是受保护的) 2 循环冗余校验算法 循环冗余校验(英语:Cyclic redu…

IOS自定义表格UITableViewCell
在UITableView中,自定义表格,最原始是继承UITableViewCell,然后通过写代码方式去搞,但是这个费事了。 1.在storyboard中 给一个ViewController的tabieview增加自定义的UITableViewCell,可以直接从 object Library里面选…

postfix邮件服务器搭建
项目环境:一台server ip:192.168.1.100 一台mail ip:192.168.1.200 一台win7 ip:192.168.1.222项目需求:1:在DNS Master上搭建DNS,能够解析mail.sw.com2:在Mail Server上部署邮件服务器,和webmail软件3…

从DataView中生成Excel报表的方案(C#)
正文: 一、首先要引用一个Excel的组件,我一开始是在Office XP下尝试的,不 成功,后来把XP给干掉,装2k,就成功了,所以这里分享的是Office 2k下 引用相关组件来实现功能的,在工程中引…

被Python「苦虐」的日子太惨了!
Python因为其优越的特性广泛应用于数据分析、人工智能、Web开发、后端开发、自动化测试/运维、爬虫等领域,也得到了很多企业的青睐。甚至连BATZJ的技术大牛,都无可否认Python现在对于一个程序员发展的重要性!最近一两年,我身边也有…

BeanUtils威力和代价
2019独角兽企业重金招聘Python工程师标准>>> BeanUtils: 威力和代价(转载综合) Apache Jakarta Commons项目非常有用。我曾在许多不同的项目上或直接或间接地使用各种流行的commons组件。其中的一个强大的组件就是BeanUtils。我将说明如何使…

C# 线程无法开启窗口的原因
在 C# 里面, 主窗口拥有主线程, 主线程产生子线程监控 Socket 埠, 子线程一收到数据流就会给主线程发送一个事件, 创建一个窗口. 现在的情况是子线程能够收到数据流, 主窗口能够收到子线程发送过来的事件, 能够创建一个窗口. 这个窗口有问题: 窗口状态像死掉程序的窗口一样, 反…

给力!斩获 GitHub 14000 Star,两周创办开源公司获数百万美元融资
作者 | 伍杏玲出品 | AI 科技大本营(ID:rgznai100)上世纪 90 年代初,21 岁大学生 Linus Torvalds 开源 Linux 操作系统,自此掀起全球开源浪潮。随后“中国 Linux 第一人”宫敏博士用手提肩背的方式将 20 盒磁带背回中国࿰…

root密码忘记怎么办
开机按e进入系统的紧急求援模式依次输入一下命令:mount -o remount,rw /sysrootchroot /sysrootecho "输入新密码" | passwd --stdin rootexitreboot转载于:https://blog.51cto.com/11552940/1971850

C#内容分页简单实现代码及祥解
//定义变量 int i,start,stop,t,stat,statt,pp,pagecount,pagesize; //变量初始值 stat0; statt0; start0;//开始查询的字符串位置,初始为0 stop0; pagesize2000;//定义每页至少显示字符串数 pagecount0; //获得当前的页数 paRequest.Params["page&qu…

灵活越障、花样空翻,腾讯轮腿式机器人亮相机器人顶会 ICRA
6月3日,腾讯轮腿式机器人Ollie(奥利)正式亮相。它像一个灵活的“轮滑小子”,能完成跳跃、360度空翻等高难度动作。 轮腿式机器人(wheel-legged robot)是近年来机器人研究的前沿领域。Ollie兼具轮式结构和腿…

android学习笔记之十服务(Service)
2019独角兽企业重金招聘Python工程师标准>>> Service拥有一个单独进程的模块. 1,继承自Service类,须实现public IBinder onBind(Intent intent) 2,通过startServie触发运行,stopService终止运行 生命周期: onCreate(如果是第一次运行) -> onStart -> onDest…

宝塔Linux常用命令
https://www.bt.cn/bbs/thread-1186-1-1.html 2017年3月8日发布全新架构的宝塔Linux 面板3.1Beta版,到现在的5.2.0正式版,历经100多天打磨,宝塔研发工程师做了大量优化适配,从最开始的只支持CentOS到现在支持CentOS、Ubuntu、Debi…

EMAIL发送系统(C#+基于SMTP认证) 2.0
这个是对于 EMAIL发送系统(C#基于SMTP认证) 1.0 的改版这个第一版是2002年11月写的,过了一年半了,才有人提意见,就修正了一下,因为后来做的项目一直用不上,也就没有注意到 前段时间有网友反馈了一些问题,这…

“奥利”来啦,腾讯Robotics X实验室跑出的“轮滑小子”
6月3日,腾讯Robotics X实验室的新成员——轮腿式机器人Ollie(奥利)正式亮相,它是机器狗Jamoca、Max和自平衡自行车之后,实验室又一创新成果。轮腿式机器人(wheel-legged robot)是近年来机器人研…

如何写一篇好的技术博客
在工作过程中,发现对很多东西都一知半解,不是很透澈,到头来很容易模糊,如果有一篇好的技术博客予以总结,一来即使忘记了,回国头来再看,仍然能 够从自己的思路中恢复;二来总结一下&am…