ANDROID FRAGMENT来回切换不刷新不销毁的最佳方法

各位朋友大家好,今天给大家说下关于ANDROID FRAGMENT来回切换不刷新不销毁的最佳方法,因为前一段时间有很多朋友问我,于是我就准备写下这篇文章来统一告诉大家吧!

90%以上的App都会用到Fragment、那么切换Fragment就很常见了、一般情况下我们在项目中需要进行Fragment的切换、一直都是用replace()方法来替换Fragment、比如入下代码:

public void switchContent(Fragment fragment) {
if(mContent != fragment) {
mContent = fragment;
mFragmentMan.beginTransaction()
.setCustomAnimations(android.R.anim.fade_in, R.anim.slide_out)
.replace(R.id.content_frame, fragment) // 替换Fragment,实现切换
.commit();
}
}

但是、这样会有一个问题、每次切换的时候、Fragment都会重新实例化、重新执行onCreateView()方法、重新加载一边数据、这样非常消耗性能和用户的数据流量、所以就在想、如何让多个Fragment彼此切换时不重新实例化? 翻看了Android官方Doc、和一些组件的源代码、发现replace()这个方法只是在上一个Fragment不再需要时采用的简便方法、正确的切换方式是add()、切换时hide()、add()另一个Fragment、再次切换时、只需hide()当前、show()另一个、这样就能做到多个Fragment切换不重新实例化、代码如下:

public void switchContent(Fragment from, Fragment to) {
if (mContent != to) {
mContent = to;
FragmentTransaction transaction = mFragmentMan.beginTransaction().setCustomAnimations(
android.R.anim.fade_in, R.anim.slide_out);
if (!to.isAdded()) { // 先判断是否被add过
transaction.hide(from).add(R.id.content_frame, to).commit(); // 隐藏当前的fragment,add下一个到Activity中
} else {
transaction.hide(from).show(to).commit(); // 隐藏当前的fragment,显示下一个
}
}
}

使用上面的方法就能避免Fragment在切换的时候再次调用onCreateView()的问题,希望可以帮到你,如果第一次不行可以在多尝试几遍看看是不是你那边弄错了,一般情况下都不会有问题的哈,下面是辅助资料,有兴趣的朋友可以看看了解下!

Fragment来回切换时不销毁的实现方法分享

Fragment是现在app上面99%都会用的东西,特别是像QQ一样的底部导航栏,或者TabLayout和ViewPage的结合,都会用到。 而我之前一直用来切换Fragment用的是replace方法,这样就导致每次切换fragment的时候都会重新加载界面,这样不但会消耗资源,而且用户体验也不好,所以最近就找了网上的资料,学习了Add方法,这个方法和replace方法最大的区别就是: replace方法是当前的界面不需要的时候去替换掉,而add方法是不会移除当前的fragment,结合hide和show方法来切换。 进入正题:首先先判断当前的fragment是否存在,不存在就new,然后在把当前的fragme添加到事务中,然后在隐藏所有的fragment,最后在显示当前的fragment: ANDROID FRAGMENT来回切换不刷新不销毁的最佳方法

ANDROID FRAGMENT来回切换不刷新不销毁的最佳方法 这样每当切换一个fragment的时候都会先隐藏所有的,然后在显示当前的,而不是像之前那样去销毁一个然后在重新创建,这样就不会每次切换就重新加载布局了。 不过还有一点一定需要注意:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

这个事务一定要每次都重新开启一个,不然都用一个会报commit already called这个错误。这个需要切记哦!

本文来自用户:IT男的投稿,不代表寂寞网立场,转载请注明出处:https://www.jimowang.com/p/4219.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 jimowangmail@126.com 举报,一经查实,本站将立刻删除。

(12)
上一篇 2022年6月14日 19:22
下一篇 2022年6月14日 22:13

相关推荐

  • 怎么设置404页面【新手必看】

    HI,大家好,废话不多说,直接上干货:怎么设置404页面,还有设置404页面,网站,错误相关的各种内容,其他的废话在这里我也不说了,我们直接来进入正题吧! 网站为什么要有404页面 1.网站设置了404错误页面,在网页不存在的情况下,或者出现死链的情况下,会通知百度等搜索引擎蜘蛛,“这是个404页面”。百度等搜索引擎蜘蛛就不会把这个不存在页面的链接收录到索引…

    技术 2022年12月12日
  • Microsoft微软帐户无法登录解决方法【推荐干货】

    最近比较忙,今天许源泉又抽时间给大家带来了Microsoft微软帐户无法登录解决方法干货,还有关于Microsoft,微软,帐户登录帐户,网络,软件这些的内容,整理总结之后,我就想着写这篇文章和大家分享一下,因为毕竟新手朋友还是很多的! 新版的Window10系统有许多自带的微软软件,有许多软件许源泉认为还是不错的,但是很多都需要登录才行。 如果您在登录Mi…

    2022年8月8日
  • 经典电视剧排行榜前十名(排行榜介绍和推荐)

    经典电视剧排行榜前十名(排行榜介绍和推荐) 1. 《小时代》 《小时代》是根据郭敬明的同名小说改编而成的青春偶像剧,由程耳担任导演。该剧以四位情同姐妹的女主角为中心,讲述了她们在都市中追寻梦想、面对困难与爱情的故事。剧中不仅有精彩的剧情,还有时尚的人物形象和精美的服装设计,吸引了无数观众。 2. 《琅琊榜》 《琅琊榜》是一部古装剧,由导演孔笙执导,胡歌、刘涛…

    2023年9月22日
  • 他们说的多终端登录/共享/同步/运行是什么意思?【新手必看】

    首先,许若熙感谢你能坚持经常过来关注我。下面我就来说说他们说的多终端登录/共享/同步/运行是什么意思,还有关于多终端终端,设备,源码等等其他相关干货,希望各位能认真阅读。因为,只有这样才能真正理解和掌握! 首先终端是什么? 终端简单的理解就是电脑、手机、平板等等设备,有些行业同时也会包含设备的运行环境。 多终端是什么? 我们常常看到网络上有很多产品介绍自己为…

    技术 2022年9月28日
  • cloudflare免费免备案CDN配置使用教程(图文)【一看就会】

    很高兴你能坚持经常过来支持笔者:何纪茂,今天就来说说关于cloudflare免费免备案CDN配置使用教程(图文),以及关于cloudflare教程图文,教程,域名等等一系列的相关问题,这些其实都是一些必备知识,只是有些时候我们没有遇到就没有去了解而已! cloudflare介绍 在使用之前您应该清楚cloudflare是干什么的,cloudflare是一家国…

    2022年11月2日 技术
  • 飞飞CMS后台密码是什么?忘记了怎么办?【最新推荐】

    大家好,很高兴又和你见面了,感谢你能经常过来支持王羽彤,这次我们就来聊聊飞飞CMS后台密码是什么忘记了怎么办,还有关于飞飞CMS后台密码密码,后台,数据库等一系列的内容,整理总结之后,我就想着写这篇文章和大家分享一下,因为毕竟新手朋友还是很多的! 飞飞CMS后台和密码 飞飞CMS默认后台路径为:http://您的域名/admin,安装完成后建议马上修改文件夹…

    技术 2022年8月11日