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这个错误。这个需要切记哦!

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

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

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

相关推荐

  • 京东在刘强东离职后的发展和变化(发展和变化分析)

    京东在刘强东离职后的发展和变化(发展和变化分析) 刘强东是京东的创始人和前CEO,他对公司的发展起到了重要的推动作用。那么,在刘强东离职后,京东会经历怎样的发展和变化呢?本文将从多个角度对京东在刘强东离职后的发展进行分析。 领导层稳定性 一个公司的领导层稳定性对于其发展至关重要。刘强东离职后,京东需要确保自身的领导层稳定,以确保公司的战略方向不会受到太大的影…

    2023年8月18日
  • 如何选择适合自己的找工作平台(选择技巧和建议)

    选择适合自己的找工作平台是每个求职者都面临的一项重要任务。在现代互联网时代,众多的招聘平台层出不穷,让人眼花缭乱。为了帮助求职者更好地选择适合自己的平台,以下是一些选择技巧和建议。 1.研究平台信誉度 首先,应该注意研究平台的信誉度。一个好的平台应该有良好的口碑和用户评价。可以通过查看平台的用户评论、网上的评价、媒体报道等方式来了解平台的信誉情况。同时,还可…

    2023年9月4日
  • 在网站的建设中,弹出框该怎样设计?弹出框为什么存在?【秒懂干货】

    大家好,今天冯寓钾精心为你准备了干货在网站的建设中,弹出框该怎样设计弹出框为什么存在,以及弹出框该怎样设计用户,网站,存在等等相关的各种干货,思路决定出路,确实,这个真的很重要,希望能帮到你! 在网站的建设中,是否要加入弹出框应该是让很多站长犹豫不决的事情。一方面,弹出框在一定程度上会降低用户的使用体验;而另一方面,弹出框又会在很多时候提升网站的转化率。那么…

    2022年10月4日
  • 如何解决苹果手机短信导入华为出现的问题(常见问题与解决方案)

    如何解决苹果手机短信导入华为出现的问题 随着手机的更新换代,越来越多的用户需要将旧手机中的短信导入新手机。当从苹果手机切换到华为手机时,如何将苹果手机中的短信导入华为手机成了一个问题。本文将介绍如何解决苹果手机短信导入华为出现的问题,包括常见问题与解决方案。 常见问题 在导入苹果手机短信到华为手机时,可能会遇到以下问题: 1. 导入过程出现错误提示,无法完成…

    2023年9月2日
  • 社区类app的优势和劣势分析及对比评测(优劣势分析与比较评测)

    社区类app的出现为人们提供了更便捷的交流和社交平台。然而,每种应用都有其优势和劣势。本文将对社区类app的优势和劣势进行分析和对比评测。 1. 优势分析 社区类app的优势主要集中在以下几个方面: 方便快捷的交流:社区类app可以通过文字、图片、语音等多种方式进行沟通,不受时间和空间限制。用户可以随时随地和他人交流,方便快捷。 丰富的内容:社区类app聚集…

    2023年9月20日
  • 卸载阿里云监控【经验之谈】

    小伙伴们你们好,杨珈很高兴又和各位见面了,今天主要来讲讲卸载阿里云监控,还有关于卸载阿里云监控阿里,终端,命令的一些干货,其实这篇文章主要还是为新手朋友整理的,总的来说思路还是很重要! 第一步:SSH连接阿里云服务器,在终端中输入下方命令,进行卸载AliYunDun操作 wget chmod+xuninstall.sh ./uninstall.sh wget…

    2022年11月27日