zoukankan      html  css  js  c++  java
  • Android Fragment碎片

    当Fragment在显示时

    方法1、public void setUserVisibleHint(boolean isVisibleToUser); //这里会判断当前Fragment是否以显示

    方法2、public void onResume(); //这里开始显示Fragment

    有时候需要在Fragment真正显示出来的时候在加载数据,例如和ViewPager组合使用时,ViewPager会预先加载上下一个Fragment,此时上下Fragment的onResume()方法就会被调用,恰好这并非期望发生的,所有setUserVisibleHint(boolean isVisibleToUser)会是个更好的选择。

    FragmentPagerAdapter与FragmentStatePagerAdapter

    相信这两个PagerAdapter的子类,大家都不陌生吧~~自从Fragment问世,使用ViewPager再结合上面任何一个实例的制作APP主页的案例特别多~~~

    那么这两个类有何区别呢?

    主要区别就在与对于fragment是否销毁,下面细说:

    FragmentPagerAdapter:对于不再需要的fragment,选择调用detach方法,仅销毁视图,并不会销毁fragment实例。

    FragmentStatePagerAdapter:会销毁不再需要的fragment,当当前事务提交以后,会彻底的将fragmeng从当前 Activity的FragmentManager中移除,state标明,销毁时,会将其onSaveInstanceState(Bundle outState)中的bundle信息保存下来,当用户切换回来,可以通过该bundle恢复生成新的fragment,也就是说,你可以在 onSaveInstanceState(Bundle outState)方法中保存一些数据,在onCreate中进行恢复创建。

    如上所说,使用FragmentStatePagerAdapter当然更省内存,但是销毁新建也是需要时间的。一般情况下,如果你是制作主页面, 就3、4个Tab,那么可以选择使用FragmentPagerAdapter,如果你是用于ViewPager展示数量特别多的条目时,那么建议使用 FragmentStatePagerAdapter。

    篇幅原因,具体的案例就不写了,大家自行测试。

  • 相关阅读:
    哈哈,原来这叫做“松鼠症”……并谈谈我建议的学习方法
    入坑IT十年(二)技术以外
    入坑IT都快十年了
    也来谈谈IT培训
    技术,是不是越新越好?
    十年之后再看“面向对象”
    话说,你这样根本就不应该去“创业型”公司
    我为什么不做外包
    NetTopologySuite Geometry&WKT&WKB&GeoJSON互转
    wpf 打印图片
  • 原文地址:https://www.cnblogs.com/rfheh/p/4409961.html
Copyright © 2011-2022 走看看