fragment大家经常应用到  声明周期依赖于宿主activity

1 第一种用法:切换fragment

/**

使用replace方法

*/
    private void showMyFragment(Fragment fragment) {
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.layout_fragment, fragment);
        transaction.commit();

}

这种方法如果切换的fragment进行请求网络等会消耗流量和性能

2 第二种用法:add  hide  show------onHiddenChange()

使用场景:add hide show进行fragment切换的时候

所以按照google老大哥的方式 添加使用add  隐藏使用hide 需要判断是否添加 如果添加直接show

/**
     * 修改显示的内容 不会重新加载
     * newFragmeent 下一个fragment
     * currentFrament 当前的fragment
     */
    private void switchFragment(Fragment newFragmeent) {
        if (newFragmeent != currentFrament ) {
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            if (!newFragmeent.isAdded()) { // 判断是否被add过
                // 隐藏当前的fragment,将 下一个fragment 添加进去
      transaction.hide(currentFrament).add(R.id.layout_content, newFragmeent).commit(); 
            } else {
                // 隐藏当前的fragment,显示下一个fragment
              transaction.hide(currentFrament).show(newFragmeent).commit(); 
            }
            currentFrament = newFragmeent
        }

}

使用add hide() show()方法切换fragment  不会走任何的生命周期 无法通过生命周期进行刷新

这个时候另一个方法就派上用处了  我们的主题之一:onHiddenChanged()

@Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);

if (hidden) {   // 不在最前端显示 相当于调用了onPause();

//做一些事情 你懂得

return;
        }else{  // 在最前端显示 相当于调用了onResume();
           //数据刷新做一些自己的事情--你懂得
        }

}

3 setUservisibleHint()

使用场景:当fragment结合viewpager使用的时候 这个方法会调用

这个方法是在oncreateView之前使用 不要使用控件

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (getUserVisibleHint()) {
   //界面可见
    } else {
//界面不可见 相当于onpause
    }
}

fragment 切换判断界面是否可见 setUserVisibleHint和onHiddenChanged使用场景相关推荐

  1. android fragment实例化,Android使得Fragment 切换时不重新实例化

    以前实现Fragment的切换都是用replace方法实现 public void startFragmentAdd(Fragment fragment) { FragmentManager frag ...

  2. ViewPager -- Fragment 切换卡顿 性能优化

    当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即 Fragment需要加载UI内容,而又频繁地切换Fragment, ...

  3. 购物车/分类 /Fragment切换 全

    0,Fragment切换 (1)MainActivity public class MainActivity extends AppCompatActivity {private ViewPager ...

  4. fragment切换出现空白页

    近期遇到一个bug,找了好久的原因,最后终于找到,在此记录一下 app的大体框架是由tab+fragment来组成的,就是类似于app 的底部有五个按钮,没点击一个按钮就会切换一个fragment,我 ...

  5. ViewPager+RadioGroup实现标题栏切换,Fragment切换

    1.说明: 在使用RadioGroup做标题栏切换的时候,跟ViewPager的滑动有冲突,最后查看了源代码+断点调试攻克了一些碰到的问题,写一篇博客总结一下,有相同需求的朋友能够借鉴一下,自己以后实 ...

  6. 【Android】保存Fragment切换状态

    [Android]保存Fragment切换状态 前言 一般频繁切换Fragment会导致频繁的释放和创建,如果Fragment比较臃肿体验就非常不好了,这里分享一个方法. 声明 欢迎转载,但请保留文章 ...

  7. Android肝帝战纪之基于上篇单Activity+多Fragment框架,开发电商式导航栏,多Fragment切换

    电商式导航栏,多Fragment切换 本文默认在已经搭建好的框架上进行开发 点此链接到上一篇基础框架的搭建 界面构思示意图 设计思路 在底部的LinearLayout中添加相应的图标,然后设置tag绑 ...

  8. Android Activity中实现Fragment切换功能效果

    一个最简单的Activity中实现Fragment切换功能效果: 一.效果图: 二.快速实现: 一个Activity中添加多个Fragment进行切换实现相应的功能需求逻辑,比如在activity中有 ...

  9. php点击切换图片的底部导航,如何优雅地使用BottomNavigationView实现底部导航栏+fragment切换效果...

    BottomNavigationView.jpeg 引言 之前总是使用RadioButton+ViewPager来实现底部导航栏+fragment切换效果,总是繁琐地还需要写ViewPager的适配器 ...

最新文章

  1. 【Linux 内核 内存管理】优化内存屏障 ④ ( 处理器内存屏障 | 八种处理器内存屏障 | 通用内存屏障 | 写内存屏障 | 读内存屏障 | 数据依赖屏障 | 强制性内存屏障 |SMP内存屏障 )
  2. 使用IDEA Maven搭建Mybatis环境
  3. 基于JAVA+SpringMVC+Mybatis+MYSQL的小学生智能学习系统
  4. linux大一实验报告,linux实验报告
  5. 高通刷机工具使用介绍
  6. 银行计算机知识,银行考试计算机知识试题及答案
  7. newifi3刷机 php,新路由3(newifi d2)刷老毛子固件教程-路由器交流
  8. 擦黑板特效表白H5源码+非常浪漫/附BGM
  9. 基于组态王6.55的电能监测系统
  10. 手机图片怎么转文本?
  11. 读后感:《约翰·伯格与先锋集团》
  12. 移动节点的间接路由方式
  13. model.load_state_dict(state_dict, strict=False)
  14. 天行健,君子以自强不息
  15. 【Python+QGIS将地名批量标注于高德地图】
  16. ARM-Linux开机自启动设置-mini2440开发板
  17. java求最短距离_计算多点之间的最短距离
  18. insert into select 语法使用
  19. 常见ant命令及其用法
  20. 简单使用SAXReader解析xml数据

热门文章

  1. ENSP演示:配置LACP模式的链路聚合
  2. 【转】WIN32编程中的HRESULT类型和LRESULT类型的区别
  3. 用java将excel表单导入数据库表单----新手入门
  4. 前端跨域问题解决方法
  5. python编写一个简单的程序验证码_用python写一个简单的验证码
  6. 如何安装govendor并打开项目
  7. java默认访问修饰符是,java默认访问修饰符
  8. 学习python第三天——Python英文看不懂怎么办?python怎么翻译?如何安装翻译插件?如何使用翻译插件?
  9. 通信原理——多址技术
  10. 强烈推荐6款软件,每一款都是良心之作!