在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment
但是,这样会有一个问题 ,应该很多朋友都遇到过:
每次切换的时候,Fragment都会重新实例化,也就是运行OnCreatVIew()方法
那么如何让多个Fragment彼此切换时不重新实例化?
正确的切换方式是add(),切换时hide(),add()另一个Fragment,再次切换时,只需hide()当前,show()另一个。
//之前显示的fragment
        private Fragment mContent;
        /** 修改显示的内容 不会重新加载 **/
        public void switchContent(Fragment to) {
                if (mContent != to) {
                        FragmentTransaction transaction = getSupportFragmentManager()
                                        .beginTransaction();
                        if (!to.isAdded()) { // 先判断是否被add过
                                transaction.hide(mContent).add(R.id.content, to).commit(); // 隐藏当前的fragment,add下一个到Activity中
                        } else {
                                transaction.hide(mContent).show(to).commit(); // 隐藏当前的fragment,显示下一个
                        }
                        mContent = to;
                }
                showContent();
        }

Android _关于fragment切换重新加载的解决分享给大家的更多相关文章

  1. Android之Viewpager+Fragment实现懒加载

    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用.而ViewPager默认会缓存三页数据,即:Viewpager每加载一个Fra ...

  2. Android ViewPager Fragment使用懒加载提升性能

     Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Androi ...

  3. Android优化方案之--Fragment的懒加载实现

    一.背景 在Android应用中,ViewPager是我们不可避免使用的一个控件,因为它可以使我们在占用较少空间的同时,增强内容的丰富性,同时以其内部流淌着Google的血液,所以它几乎成了每一个Ap ...

  4. ViewPager+Fragment取消预加载(延迟加载)(转)

    原文:http://www.2cto.com/kf/201501/368954.html 在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragmen ...

  5. Andriod开发技巧——Fragment的懒加载

    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个 fragment都需要去加载数据,或从本地加载,或从网络加载,那么 ...

  6. Fragment的懒加载

    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用,而如果每个fragment都需要去加载数据,或从本地加载,或从网络加载,那么在 ...

  7. ViewPager+Fragment取消预加载(延迟加载)

    在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragment有个不好或者太好的地方.例如你在ViewPager中添加了三个Fragment,当加载V ...

  8. Fragment以及懒加载

    1.Fragments Fragment是Activity中用户界面的一个行为或者是一部分,你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activ ...

  9. 关于Fragment的懒加载问题

    为了达到界面效果,我们有时需要使用到TabLayout+ViewPager的方式来布局界面,然而ViewPager的adapter总是默认把与当前可见的fragment相邻的两个fragment给加载 ...

随机推荐

  1. python coroutine的学习跟总结[转]

    简介 因为最近一段时间需要研究一些openstack相关的东西,在阅读一些相关代码的时候碰到很多python特定的一些特性,比如generator, coroutine以及一些相关的类库,比如even ...

  2. css 特殊使用技巧

    1  border颜色设置 border-color: transparent black black black;   分别设置四条边框的颜色  上边transparent 透明无色 2  阴影 t ...

  3. js-倒计时原理

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...

  4. 第三天:DOM操作css

    基本语法: 引用样式时是在head中,用link,另外需要<div>才能显示 修改样式:按下按钮后,引用的样式部分,颜色变为蓝色 如图下图是更改了样式中hello的颜色 代码如下: < ...

  5. 怎么找到与你Eclipse匹配的spring tool suite插件

    在Eclipse中安装插件是很简单的,但是某些插件需要与你的Eclipse的版本对应才能用,比如spring的插件. 首先,查看你的Eclipse的版本. 从eclipse的Help菜单的About ...

  6. 浅析C#中的Thread ThreadPool Task和async/await

    .net 项目中不可避免地要与线程打交道,目的都是实现异步.并发.从最开始的new Thread()入门,到后来的Task.Run(),如今在使用async/await的时候却有很多疑问. 先来看一段 ...

  7. asp.net 增加404页面(非302、200)

    由于项目改版,导致产生了许多死链,但是之前的404页面都是在Application_Error中Response.Redicet()到404页面,但是这样子是302跳转,导致搜索引擎认为网页不是死链而 ...

  8. GDI+配置

    GDI+的配置过程: 一.打开stdafx.h文件,在其中加入: #include "Gdiplus.h" #pragma comment(lib,"Gdiplus.h& ...

  9. SoftWareHelper

    SoftWareHelper 环境 Visual Studio 2017,.Net Framework 4.0 SDK GitHub源码:https://github.com/yanjinhuagoo ...

  10. matplotlib可视化之如何给图形添加数据标签?

    当我们获取完数据之后,一般来说数据可视化呈现的最基础图形就是:柱状图.水平条形图.折线图等等,在python的matplotlib库中分别可用bar.barh.plot函数来构建它们,再使用xtick ...