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

相关推荐

  • 百度云加速免费版CDN使用方法(图文)【秒懂干货】

    哈喽,小伙伴们大家好,今天秦承贤说的这篇文章百度云加速免费版CDN使用方法(图文),还有关于百度云加速方法免费版,使用方法,图文这些的精品干货文章,希望你们能通过这篇文章很好的掌握其中的技巧,下面我就来为大家全部一一解析! 百度云加速说明 百度云加速是一款百度旗下的CDN服务工具,支持免费CDN、网站攻击防护、SEO优化功能,是国内免费CDN服务使用率最多的…

    2022年11月15日 技术
  • 百度编辑器修改配置文件经验分享【详细介绍】

    小伙伴们大家好,今天周铃旨给大家分析下关于百度编辑器修改配置文件经验分享的问题,以及百度编辑器配置方法代码,文件,图片的一系列相关干货,认真阅读完,把我想表达的思路完全理解,相信你很快就可以掌握! 工具栏按钮及下拉菜单配置 修改文件:ueditor.config.js 修改代码: //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的…

    2022年8月14日
  • 畅言评论悬浮窗广告去除方法【新手必看】

    小伙伴们哈喽,这次其他的褚文祥就不说了,主要就是来讲讲畅言评论悬浮窗广告去除方法,以及关于畅言去广告广告,网站,效果这些一系列的精品相关干货,其实这篇文章主要还是为新手朋友整理的,总的来说思路还是很重要! 搜狐畅言评论悬浮窗广告去除具体效果,大家也可以看六久阁织梦模板网的效果,畅言广告已经被屏蔽。 下面六久阁就说说解决方法: 原理:破解畅言广告JS,JS本地…

    2022年10月17日
  • 如何查询名下支付宝账户和注销方法【最新推荐】

    首先,朱荟鸿感谢你能坚持经常过来关注我。下面我就来说说如何查询名下支付宝账户和注销方法,还有关于查询支付宝,注销支付宝账户,名下,方法这些的内容,既然来了就别走了,好好的静下心把这篇文章阅读完相信你会有一定的收获哦! 支付宝账户以前可以申请多个,像朱荟鸿以前就申请过几个账户,名下有五六个支付宝账户。时间久了有些就忘记了,那么如何查询名下支付宝账户了? 如何查…

    2022年8月31日
  • 怎么搭建一个网站或者博客【秒懂干货】

    美好的一天即将开始,下面就由笔者卫致宏来一起聊聊怎么搭建一个网站或者博客,还有关于搭建网站服务商,域名,服务器的一些干货,主要就是想给大家提供一个思路分享给大家,毕竟也是经过一系列总结过的哈! ①、域名+服务器 一个博客(网站)最基本的是名字(域名)和家(服务器)。尽量找大服务商买,小服务商倒闭了没地儿找,腾讯云、阿里云、百度云、华为云这些都是可以的,毕竟大…

    2022年9月11日
  • 网站流量统计与分析【详细介绍】

    大家好,今天李雨彤给大家讲解下关于网站流量统计与分析的问题,以及网站流量分析网站,用户,页面的一系列相关干货,如果你是老司机,你可能觉得很简单,但如果你是新手,你可能就不这么想了。 网站流量是网站的命脉,所以作为站长,我们必须了解清楚网站流量的来龙去脉,并能清楚的分析出流量用户的喜好来调整网站的发展方向。 所以李雨彤带来这篇新人入门级网站流量统计与分析经验分…

    2022年8月29日