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

相关推荐

  • phpstudy如何安装PHP扩展sg11【秒懂干货】

    最近比较忙,今天陈红又抽时间给大家带来了phpstudy如何安装PHP扩展sg11干货,还有关于安装sg11文件夹,文件,像素等等其他相关干货,只要你每天都能来,我就能每天整理一些不错的干货分享给你们! 今天,陈红在测试一款苹果cms模板时候,模板应该是加密了,要求安装PHP扩展sg11,陈红用的phpstudy本地测试环境,分享下经验。 1、找到phpst…

    2022年11月28日
  • 如何在菜市场做好20个生意?(菜市场生意经营指南与建议)

    如何在菜市场做好20个生意? 在菜市场经营生意,需要掌握一定的技巧和策略。以下是20个实用的方法和建议,帮助您在菜市场中获得更好的生意。 1. 了解消费者需求 了解消费者的需求是做好生意的关键。商家需要了解顾客的口味、喜好和消费习惯,并根据市场需求调整商品种类和价格。 2. 保持商品新鲜 商品新鲜是吸引顾客的重要因素。商家需要保证商品的质量和新鲜度,每天按时…

    2023年8月29日
  • 红酒起子怎么使用及注意事项(红酒起子使用技巧和注意事项介绍)

    红酒起子怎么使用及注意事项(红酒起子使用技巧和注意事项介绍) 一、红酒起子的使用方法 红酒起子是打开红酒瓶塞的专用工具,使用方法如下: 首先,将红酒起子插入酒塞内,将起子头部与酒瓶口卡住,利用杠杆原理将起子向上抬起,逐渐把酒塞拔出。 当酒塞拔出一半多时,可以停止使用起子,用手握住酒瓶,轻轻用力向自身方向一扭,即可将酒塞完全拔出。 二、红酒起子的注意事项 正确…

    2023年9月21日
  • 使用docker安装宝塔面板【详细介绍】

    HI,小伙伴们你们好,今天赵跃进比较忙,抽个时间来说下关于使用docker安装宝塔面板,还有关于docker安装宝塔宝塔,容器,账号这些的相关干货文章,其实这个内容对于新手来说还是挺重要的,因为涉及面很大。如果你认真读了,一定会有所收获! 安装docker以及宝塔 yuminstalldocker systemctlstartdocker dockerpul…

    技术 2022年11月3日
  • 精影显卡在游戏和图形处理中的表现和应用(游戏和图形处理应用分析)

    精影显卡在游戏和图形处理中的表现和应用 1. 游戏性能表现 精影显卡以其卓越的游戏性能而在游戏圈中备受瞩目。它具有以下几个方面的突出表现: 高帧率: 精影显卡在游戏中能够提供高帧率的流畅画面,使玩家能够获得更好的游戏体验。 逼真细腻的画面: 精影显卡通过先进的图形处理技术,能够呈现出逼真细腻的游戏画面,让玩家身临其境。 稳定的性能: 精影显卡采用优质的硬件和…

    2023年9月21日
  • 如何自定义mobaxterm汉化界面(自定义汉化界面技巧和建议)

    如何自定义Mobaxterm汉化界面(自定义汉化界面技巧和建议) 在使用Mobaxterm进行远程连接管理的过程中,很多用户倾向于将界面汉化为中文,以便更加方便地操作和管理。本文将介绍如何自定义Mobaxterm的汉化界面,并提供一些技巧和建议,帮助您实现这一目标。 技巧1:选择适合的汉化文件 首先,要实现Mobaxterm的汉化界面,您需要下载适用于您当前…

    技术 2023年9月1日