FragmentTransition replace add show hide方法的使用和差异
来源:互联网 发布:淘宝哪些店铺书包好看 编辑:程序博客网 时间:2024/06/02 12:20
android项目,使用Fragment来展示视图,替换Activity显示,能有效的提高响应的速度。结合在项目中的实践,接下来说说我对这些方法的使用感悟。
replace使用
使用replace()替换后会将之前的fragment的view从viewtree中删除
触发顺序:
detach()->onPause()->onStop()->onDestroyView()
attach()->onCreateView()->onActivityCreated()->onStart()->onResume()
使用该方法,每次都可以走一遍生命周期方法,让对象保持在最新的状态,同时也会带来频繁的数据请求,实例销毁和创建。
replace时,通过FragmentTransition的addToBackStack(String name)方法,把被置换的fragment压入任务栈,放在新的fragment下。在replace时如果带上tag参数,那么就可以通过FragmentManager的findFragmentByTag()找到被置换的fragment对象。
这样,当按返回键时,被置换的Fragment就能重新显示出来,并执行对应的生命周期方法(如上显示的触发顺序)。
add使用
使用该方法,常和show和hide配合,达到replace方法的显示效果。
在使用过程中,有时候会出现视图重叠。原因有两种:
- 没有使用FrameLayout作为容器
- 第一次add把Fragment添加到容器后,第二次通过FragmentManager.findFragmentByTag(“fragment” + position)找到Fragment而不是重新新建实例add进容器
一个MainActivity加上多个Fragment来构建android项目界面主体。用这种方式,底部每一个菜单就是一个fragment,暂且叫它一级操作界面,通常用add-show -hide方式显示Fragment,在每一个Tab里(二级以上操作界面),通过replace不同的fragment来展示不同的视图。
使用这种方式,我在项目中遇到了一个问题。如果二级操作界面进入到三级操作界面,再从三级操作界面返回到二级操作界面,那么这时候在一级操作界面里,调用了二级操作界面的对象的成员对象将变成null。
原来,当二级操作界面进入到三级操作界面,再从三级操作界面返回到二级操作界面,二级以上的界面通过replace来显示不同的界面,这时候二级操作界面的fragment将按上面的触发顺序重新走一遍生命周期方法,创建了新的实例,原来在一级目录里引用的二级界面上的Fragment的成员对象依然是旧实例里的。
因此这时候解决的办法可以,在每次创建二级界面的fragment实例时,重新更新一遍(set方法)一级界面会用到的所有涉及二级界面fragment的成员变量。
- FragmentTransition replace add show hide方法的使用和差异
- android碎片的replace()和add()、hide()、show()的区别
- FragmentTransaction的add(),hide(),show()方法与Replace()方法的比较
- 安卓学习笔记---Fragmnet使用之add,show,hide,remove以及replace方法
- [Android]Fragment加载替换add,show,hide,replace方法
- Fragment加载替换add,show,hide,replace方法
- Fragment加载轮换add,show,hide,replace方法
- Fragment生命周期及add、replace、remove、hide&show方法分析
- Fragment加载替换add,show,hide,replace方法
- Fragment加载替换add,show,hide,replace方法
- Fragment的show,add,hide使用
- Fragment add、show、hide、replace、remove、
- 安卓中用show()和hide()方法来代替转跳fragment的replace()方法
- 为什么fragment使用hide()和show()而不使用replace()
- 一道面试题:两个Fragment在replace/add 和 hide/show不同情况下来回跳转生命周期的变化
- Android Fragment使用hide和show方法的问题
- Android Fragment 真正的完全解析(上) add remove replace detach attach hide show
- Android Fragment 真正的完全解析(上) add remove replace detach attach hide show
- hihoCoder 1261 String Problem II 【字典树 + DFS】
- iOS 真机调试 出现process launch failed: timed out waiting for app to launch 和 failed to get the task for 的
- CodeForces 466A Cheap Travel
- GTK+重拾--10 GTK+中的组件(二)
- 导出Excel工具类
- FragmentTransition replace add show hide方法的使用和差异
- 预处理语句
- MesaSQLite数据库简单使用
- 程序中执行shell命令行,获取system目录读写权限
- Qt之QTableWidget详细使用
- 计量经济学复习笔记(七)
- 理解C++ dynamic_cast
- Java设计模式透析之 —— 适配器(Adapter)
- iOS label的lineBreak和行间距的碰撞