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

相关推荐

  • 网站程序站点地图制作大全【详细讲解】

    最近有很多朋友问尤艺杰关于网站程序站点地图制作大全的问题,以及其他关于建站经验,网站优化,站点地图舆图,网站,帝国的一些相关干货,其实这个内容对于新手来说还是挺重要的,因为涉及面很大。如果你认真读了,一定会有所收获! 在咱们日常平凡建站的过程当中,大多数的同伙所采用的建站法式都是ecshop,织梦,wordpress,帝国CMS,Zblog等,这么多的法式在…

    技术 2022年10月27日
  • 企业微信使用方法和说明(企业微信使用入门指南)

    企业微信使用方法和说明 一、企业微信简介 企业微信是一款为企业开发的通讯工具,具有丰富的功能和便捷的操作,可以帮助企业实现高效的沟通和协作。企业微信支持多人聊天、文件共享、日程安排等多种功能,同时还有丰富的第三方应用和接口,可以满足企业的各种需求。 二、企业微信安装与注册 首先,您需要在手机上下载企业微信APP并安装。 打开APP后,按照提示进行注册,填写您…

    2023年8月18日
  • 游戏推广员行业的现状和发展趋势(行业现状和发展趋势分析)

    游戏推广员行业是随着游戏产业的迅速发展而兴起的,目前已经成为一个独立而又重要的行业。本文将从行业现状和发展趋势两个方面进行分析,并探讨未来游戏推广员行业的发展前景。 一、行业现状分析 当前,游戏产业正处于高速发展阶段,各类游戏层出不穷,市场竞争激烈。在这样的背景下,游戏推广员的角色变得十分重要。游戏推广员主要负责游戏的宣传推广,包括制定推广策略、开展线上线下…

  • 网页禁止复制或复制自带推广信息解决办法【最新推荐】

    很高兴又和小伙伴们见面了,这次周铁锋主要整理了一些关于网页禁止复制或复制自带推广信息解决办法的问题,以及关于禁止复制网页,信息,浏览器等等一系列的相关问题,思路决定出路,确实,这个真的很重要,希望能帮到你! 网页禁止复制怎么办?复制内容自带推广信息怎么解决?相信大家肯定遇到过不让复制,或者复制后有网址在内容末尾的情况,比如CSDN复制文字后就会自动在复制内容…

    2022年9月13日
  • 全世界最好的大学排名前十(大学介绍与排名分析)

    本文将介绍全世界最好的大学排名前十,包括这些大学的介绍和排名分析。 第一名:哈佛大学 哈佛大学是美国的一所私立大学,创建于1636年,是全世界最著名的的高等教育机构之一。其在学术领域的地位和影响力非常强大,为世界各地的高等教育机构树立了榜样。 第二名:麻省理工学院 麻省理工学院是一所私立研究型大学,位于美国马萨诸塞州剑桥市。该校在科学技术和工程学领域享有极高…

    2023年8月19日
  • 如何提高找人的成功率和效率(技巧和建议)

    如何提高找人的成功率和效率(技巧和建议) 找人是我们生活和工作中常常需要做的一项任务。无论是寻找合作伙伴、找到适合的员工,还是联系旧识或失散多年的亲友,提高找人的成功率和效率对我们来说都非常重要。以下是一些技巧和建议,可以帮助您更好地提高找人的效果。 1.明确目标 在开始找人之前,首先要明确自己的目标和需求。确定您要找的人的具体信息,比如姓名、公司、地址等。…

    2023年8月31日