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

相关推荐

  • 杰灵采集软件发布接口配置【详细介绍】

    小伙伴们你们好,郑乾很高兴又和各位见面了,今天主要来讲讲杰灵采集软件发布接口配置,以及杰灵采集接口,软件,帝国的一系列相关干货,主要就是想给大家提供一个思路分享给大家,毕竟也是经过一系列总结过的哈! 杰灵采集软件发布接口配置 1、打开软件登录后,随意选择一个采集任务,点击“发布内容”,点击“编辑”进入发布接口配置页面 2、接口网址为您接口文件的地址,下面为您…

    2022年10月22日
  • 摆地摊卖什么最赚钱而且很受欢迎(热门商品推荐与分析)

    摆地摊卖什么最赚钱而且很受欢迎 地摊经济正在火热发展,对于想要做小本生意的人来说,摆地摊是一个很好的选择。那么,哪些商品最受欢迎,最能赚钱呢?本文将为你推荐一些热门商品,并进行分析。 1. 手工制作的小饰品 手工制作的小饰品如手链、项链、耳环等,因其独特性和精致度,深受年轻人的喜爱。而且,这类商品成本较低,利润空间较大。你可以根据自己的兴趣和特长,设计出自己…

    技术 2023年9月15日
  • 华为一键root工具的未来发展和趋势分析(华为一键root工具未来发展预测)

    华为一键root工具的未来发展和趋势分析 华为一键root工具是一款非常实用的工具,随着手机系统的不断更新和升级,root工具也在不断发展和变化。未来,华为一键root工具将会朝着哪些方向发展呢?下面我们来分析一下。 更加智能化和自动化 随着人工智能技术的不断发展,未来华为一键root工具将会更加智能化和自动化。工具将会根据用户的手机型号、系统版本、应用程序…

    技术 2023年8月20日
  • 最新python织梦dedecms远程执行脚本【详细介绍】

    HI,大家好,废话不多说,直接上干货:最新python织梦dedecms远程执行脚本,以及织梦cms漏洞漏洞,脚本,视频教程相关的问题,主要就是想给大家提供一个思路分享给大家,毕竟也是经过一系列总结过的哈! 织梦CMS是使用最多的CMS之 一,但是漏洞也非常多。分享一款python写的织梦远程文件包含漏洞。修复此漏洞方法,请见文章底部。 织梦CMS漏洞代码 …

    2022年12月6日
  • 2019最新广告法禁词大全【详细讲解】

    小伙伴们你们好,冯佳莹很高兴又和各位见面了,今天主要来讲讲2019最新广告法禁词大全,还有关于广告法禁词用语,词语,品牌这些的内容,只要你每天都能来,我就能每天整理一些不错的干货分享给你们! 新广告法中只是明确不能使用“国家级、最高级、最佳”等用语,但这其的“等”并没有做明确的解释,换句话说,这个说明具有很大的解释范围间。 极限违禁词包括但不限于商品列表页、…

    技术 2022年9月30日
  • 宝塔面板安装fileinfo组件【最新推荐】

    HI,大家好,废话不多说,直接上干货:宝塔面板安装fileinfo组件,以及宝塔fileinfo宝塔,面板,组件等等相关的各种干货,认认真真阅读完,若能把我想表达的全部理解,相信你已经离大牛不远了哈! 在安装苹果CMS的时候,需要PHP的fileinfo组件,如果安装宝塔面板这个就非常简单了,今天分享下宝塔面板安装fileinfo组件。 宝塔面板中有安装相关…

    2022年11月30日