新东西011--Android Fragment常见错误分析
来源:互联网 发布:杜冷丁多少钱一支淘宝 编辑:程序博客网 时间:2024/05/29 18:22
Fragment的onResume和onHiddenChanged差异解析
OnHiddenChanged:它是onResume的辅助工具,它在第一次进入Fragment和销毁Fragment的时候不会调用。这也意味着使用replace方法切换Fragment的时候它不会得到调用(因为使用replace(id,fragmentB)切换的时候,目标fragmentB会重建,会重走FramentB的生命周期)。但在同一个Activity下通过hide/show方法切换Fragment的时候就会触发这个方法。通过一个boolean hidden的参数,对同一Activity下的Fragment隐藏显示变化做区分。
OnResume:跟activity生命周期相似,在new Fragment,并将该Fragmentd加载到界面的时候,重走Fragment的生命周期函数,onCreateView-onresume(只列举部分)。同时,它也跟activity的生命周期相关,比如ActivityA下有一个FragmentA,当从ActivityA跳转到ActivityB,然后从ActivityB返回ActivityA的时候,会调用FragmentA的onResume方法。这也说明Fragment的onResume是依赖于Activity的onResume存在的,只要这个Fragment对象不变(因为一新建就会走自己的生命周期函数,自然会走onResume),那么只有当Activity调用onResume的时候才会调用其下Fragment的onResume方法。
这里也顺便提一下,“onResume只会调用一次的问题”,有很多朋友在开发过程中复用Fragment,使用hiden/show切换Fragment,同时又没有切换Activity显示,那么除了第一次走Fragment周期函数的时候会调用onResume,其余都不会调用,因为Fragment对象不变,Activity也没有调用onResume方法。
Fragment的commit()方法和cmmitAllowingStateLose()的区别
在说这个之前需要普及一点Activity的onSaveInstanceState的调用时机,onSaveInstanceState调用时机是指当前activity在当前activety队列的最上层的时候,这个时候旋转屏幕肯定会引起onSaveInstanceState的调用。其次,在显示在最上层的情况下,用户按下Home键或者切换应用,切换activity的时候都会引起onsaveInstance的调用。
cmmitAllowingStateLose:在Activity的onSaveInstanceState之后调用增减Fragment的操作并commit会出现IllegalStateException错误,原因是因为Activity的commit方法一定要在onSaveInstancestate方法之前调用。如果要在之后调用就要使用commitAllowingStateLose来确保使用。
- 新东西011--Android Fragment常见错误分析
- Android常见错误分析
- android开发 Fragment嵌套调用常见错误
- android开发 Fragment嵌套调用常见错误
- android常见错误分析1
- Fragment常见错误
- 新东西008--Android UI事件分析_focusable
- Fragment常见错误(state丢失)
- android的一些新东西
- 【常见错误】android常见错误
- Quartus常见错误分析
- spring常见错误分析
- c++常见错误分析
- spring常见错误分析
- KILL常见错误分析
- 写作常见错误分析
- oracle 常见错误分析
- Quartus常见错误分析
- Java中native关键字
- 从头认识java-1.5 继承(2)
- webView的使用以及总结
- 转:深入理解面向对象设计的七大原则
- 在64位机器上VS2012编译的32位程序在XP系统上运行提示Wow64EnableWow64FsRedirection无法定位于输入点
- 新东西011--Android Fragment常见错误分析
- Arrays.asList()参数不同,返回的数据不同的原因?
- iOS对象(字典或数组)转化为JSon字符串
- 获取下拉框选中的label
- oracle中表中含有的日期字段如何作为筛选条件
- GPS坐标(经纬度)转换为百度坐标(经纬度)的JAVA方法
- JS学习——sort-table的实现
- Java入门到精通——调错篇之Spring2.5利用aspect实现AOP时报错: error at ::0 can't find referenced pointcut XXX 分类: Java从
- pickView的用法