首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏算法微时光

    android之FragmentPagerAdapter和FragmentStatePagerAdapter

    如果应用场景是更多的Fragment,请使用FragmentStatePagerAdapterFragmentStatePagerAdapter FragmentStatePagerAdapter和FragmentPagerAdapter 类似。 继承 PagerAdapter。

    2.3K20发布于 2020-12-09
  • 来自专栏向治洪

    android FragmentpagerAdapter和FragmentStatePagerAdapter的区别

    如文档所述,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter 2.FragmentStatePagerAdapter FragmentStatePagerAdapter 和前面的 FragmentPagerAdapter 一样,是继承子 PagerAdapter 由于 FragmentStatePagerAdapter.instantiateItem() 在大多数情况下,都将调用 getItem() 来生成新的对象,因此如果在该函数中放置与数据集相关的 setter FragmentStatePagerAdapter 就是通过这种方式,每次都创建一个新的 Fragment,而在不用后就立刻释放其资源,来达到节省内存占用的目的的。

    1.2K90发布于 2018-02-01
  • 来自专栏Android知识分享

    Carson带你学Android:ViewPage最详细的使用教程

    用相应的适配器Adapter关联上面的页卡(View/Fragment)和ViewPager: PagerAdapter 数据源:List FragmentPagerAdapter 数据源:List FragmentStatePagerAdapter FragmentStatePagerAdapter 和 FragmentPagerAdapter 的异同: 同 PageAdapter 是 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter 异 FragmentPagerAdapter使用时,每一个生成的 Fragment 都将保存在内存之中,而 FragmentStatePagerAdapter 只保留了当前显示的Fragment,其他划过的Fragment离开视线后,就会被销毁;而在页面需要显示时,再生成新的实例。 即当拥有大量的页面时,使用FragmentStatePagerAdapter不必在内存中占用大量的内存 6.

    86510编辑于 2022-03-24
  • 来自专栏学海无涯

    Android开发之ViewPager+Fragment

    fragmentContainter.get(arg0); } }); 这样就可以实现滑动Fragment 重要的话 PageAdapter 是 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类,可以将上面的替换成FragmentStatePagerAdapterFragmentStatePagerAdapter 和 FragmentPagerAdapter 的区别: FragmentPagerAdapter使用时,每一个生成的 Fragment 都将保存在内存之中 ,而 FragmentStatePagerAdapter 只保留了当前显示的Fragment,其他划过的Fragment离开视线后,就会被销毁;而在页面需要显示时,再生成新的实例(可以通过打印Fragment

    90050发布于 2018-04-24
  • 来自专栏JetPack

    ViewPager中Fragment状态保存的哪些事

    引言 在使用 ViewPager 时 , 如果我们的适配器使用的是 FragmentStatePagerAdapter ,那么当我们重新滑到之前已销毁的页面时,一般情况下页面的状态依然将保持不变(比如 基础概念 ViewPager 官方的适配器有两种,即 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 。 主要原因是 FragmentStatePagerAdapter 每次会重建以及 销毁 Fragment, 而 FragmentPageAdapter 并不会销毁实例,只是对视图做了 attach 和 detach MainAdapter]: class MainAdapter(fragmentManager: FragmentManager, private val datas: List<String>) : FragmentStatePagerAdapter return fragment; } 小结 所以我们可以简单理解为 FragmentStatePagerAdapter 之所以可以做到状态还原,是因为其在销毁 Fragment 时,默认缓存了当前 Fragment

    2K20编辑于 2022-05-11
  • 来自专栏Android知识分享

    Android开发:ViewPage最详细教程

    用相应的适配器Adapter关联上面的页卡(View/Fragment)和ViewPager: PagerAdapter 数据源:List FragmentPagerAdapter 数据源:List FragmentStatePagerAdapter 和 FragmentPagerAdapter 的异同: 同 PageAdapter 是 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类 ,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter 异 FragmentPagerAdapter使用时,每一个生成的 Fragment 都将保存在内存之中,而 FragmentStatePagerAdapter 只保留了当前显示的Fragment,其他划过的Fragment离开视线后,就会被销毁;而在页面需要显示时,再生成新的实例。 即当拥有大量的页面时,使用FragmentStatePagerAdapter不必在内存中占用大量的内存 总结 本文对ViewPage进行了全面的介绍,接下来我会介绍继续介绍Android开发中的相关知识

    3.6K41发布于 2019-02-22
  • 来自专栏james大数据架构

    Android中Fragment+ViewPager的配合使用

    FragmentPagerAdapter和FragmentStatePagerAdapter这两个类都有简单的代码显示如何构建一个完整的用户界面与他们。 这个时候你可以考虑使用FragmentStatePagerAdapter ,当使用FragmentStatePagerAdapter 时,如果Fragment不显示,那么Fragment对象会被销毁,( onSaveInstanceState(Bundle outState)方法来保存Fragment的状态,下次Fragment显示时通过onCreate(Bundle savedInstanceState)把存储的状态值取出来,FragmentStatePagerAdapter

    1.4K100发布于 2018-01-22
  • 来自专栏全栈程序员必看

    【1-100】RadioGroup实现应用主界面「建议收藏」

    fragmentContainer, 0, fragment); // 提交事务 fragments.finishUpdate(fragmentContainer); } // 使用FragmentStatePagerAdapter 管理Fragment FragmentStatePagerAdapter fragments = new FragmentStatePagerAdapter(getSupportFragmentManager

    63320编辑于 2022-07-19
  • 来自专栏andy的小窝

    关于安卓下拉刷新时的悬浮菜单栏

    BGAStickyNavLayout 里面只能是包含三个子控件且第三个子控件为ViewPager时,其adapter必须是FragmentPagerAdapter或者          FragmentStatePagerAdapter android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentStatePagerAdapter mDirectViewPager.getAdapter(); if (adapter instanceof FragmentPagerAdapter || adapter instanceof FragmentStatePagerAdapter IllegalStateException(BGAStickyNavLayout.class.getSimpleName() + "的第三个子控件为ViewPager时,其adapter必须是FragmentPagerAdapter或者FragmentStatePagerAdapter

    1.7K20发布于 2020-02-12
  • 来自专栏腾讯云开发者社区头条

    Android基础:Fragment,看这篇就够了 ( 下 )

    但是一般来说,通常都会使用PagerAdapter的两个子类:FragmentPagerAdapter和FragmentStatePagerAdapter作为ViewPager的适配器,他们的特点是界面是 在support v13和support v4中都提供了FragmentPagerAdapter和FragmentStatePagerAdapter,区别在于:support v13中使用android.app.Fragment 一般都使用support v4中的FragmentPagerAdapter和FragmentStatePagerAdapter。 FragmentPagerAdapter和FragmentStatePagerAdapter需要重写的方法都一样,常见的重写方法如下: public FragmentPagerAdapter(FragmentManager

    2.4K00发布于 2017-07-26
  • 来自专栏程序员开发工具

    Fragment 可见性监听方案 - 完美兼容多种 case

    onVisibilityChanged(this.visible) } } AndroidX 的适配(也是一个坑) 在 AndroidX 当中,FragmentAdapter 和 FragmentStatePagerAdapter 构造方法 public FragmentStatePagerAdapter(@NonNull FragmentManager fm, @Behavior int behavior) { 已 FragmentStatePagerAdapter 为例,我们一起开看看源码 @SuppressWarnings({"ReferenceEquality", "deprecation"}) @Override 支持 viewPager 嵌套 fragment,主要是通过 setUserVisibleHint 兼容, * FragmentStatePagerAdapter BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT * 项目当中一级 ViewPager adapter 比较特殊,不是 FragmentPagerAdapter,也不是 FragmentStatePagerAdapter,导致这种方式用不了 */

    3.2K10编辑于 2022-01-20
  • 来自专栏达达前端

    Android Fragment用法知识点的讲解

    FragmentPagerAdapter和FragmentStatePagerAdapter FragmentPagerAdapter适用于页面较少的情况,把UI分离,并没有回收,FragmentStatePagerAdapter

    1.4K60发布于 2019-07-03
  • 来自专栏Android中高级开发

    Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment

    而且呢Google非常贴心的提供了两个类FragmentPagerAdapter和FragmentStatePagerAdapter来应付那些一般场景。 关于FragmentStatePagerAdapter,读者可自行分析,代码也不长。 4个方法可能太多,所以Google提供了FragmentPagerAdapter以及FragmentStatePagerAdapter,这两个也是抽象类,不过我们的自定义Adapter只需要实现其中的getItem 关于FragmentPagerAdapter以及FragmentStatePagerAdapter的不同,我这里再总结一下。 理解PagerAdapter,以及如何实现它 理解Google提供了两个特定场景的PagerAdapter实现类FragmentPagerAdapter以及FragmentStatePagerAdapter

    2.2K10发布于 2018-08-07
  • 来自专栏全栈程序员必看

    TabLayout+ViewPager+Fragment实现切页展示「建议收藏」

    titles.add("fragment4"); titles.add("fragment5"); viewPager.setAdapter(new FragmentStatePagerAdapter 看源码可以发现,FragmentStatePagerAdapter中比FragmentPagerAdapter多维护着两个列表: private ArrayList<Fragment.SavedState 而对于Fragment比较多的情况,需要切换的时候销毁以前的Fragment以释放内存,就可以使用FragmentStatePagerAdapter。 优化方案二:避免Fragment的销毁 不管是FragmentStatePagerAdapter还是FragmentPagerAdapter,其中都有一个方法可以被覆写: @Override 这也是FragmentStatePagerAdapter的精髓之处,如果注释掉,一旦Activity被回收进入异常销毁状态,Fragment就无法恢复之前的状态,因此这种方法也是有纰漏和局限性的。

    4.6K10编辑于 2022-09-15
  • 来自专栏C++干货基地

    【Kotlin报错已解决】java.lang.IllegalStateException: Fragment not attached to Activity

    方法六:使用FragmentStatePagerAdapter代替FragmentPagerAdapter 如果我们在使用ViewPager来显示 Fragment,可以考虑使用FragmentStatePagerAdapter FragmentStatePagerAdapter在销毁 Fragment 时会将其从内存中移除,而FragmentPagerAdapter则会保留所有的 Fragment 在内存中。 以下是使用FragmentStatePagerAdapter来解决上面的报错的示例代码: class MyFragmentPagerAdapter(fm: FragmentManager, lifecycle : Lifecycle) : FragmentStatePagerAdapter(fm, lifecycle) { override fun getItem(position: Int): Fragment 或者使用FragmentStatePagerAdapter代替FragmentPagerAdapter,避免在使用ViewPager时出现问题。

    37300编辑于 2025-05-26
  • 来自专栏everhad

    模板代码 - 列表和下拉刷新

    background">@drawable/actionbar_tab_indicator</item> </style> 让Activity继承FragmentActivity,定义一个继承自FragmentStatePagerAdapter getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); //FragmentStatePagerAdapter //关联viewPager和FragmentStatePagerAdapter实例 viewPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager

    4.2K50发布于 2018-01-05
  • 来自专栏Android源码框架分析

    ViewPager刷新问题原理分析及解决方案(FragmentPagerAdapter+FragementStatePagerAdapter)ViewPager+FragmentPagerAdapte

    FragmentStatePagerAdapter如何通过notifyDataSetChanged刷新ViewPager页面 对于FragmentStatePagerAdapter相对容易些,如果不需要考虑效率 即可,只需要复写其getItemPosition函数 public int getItemPosition(Object object) { return POSITION_NONE; } 因为FragmentStatePagerAdapter 对于ViewPager在使用FragmentPagerAdapter/FragmentStatePagerAdapter的时候都不会addToBackStack,这也是为什么detach跟remove有时候表现一致或者不一致的原因 f; } } } return null; } 总结 本文简单分析了下ViewPager在使用FrgmentPagerAdapter跟FragmentStatePagerAdapter

    3.6K20发布于 2018-06-29
  • 来自专栏全栈程序员必看

    ViewPager 全面总结

    相同点: FragmentPagerAdapter和FragmentStatePagerAdapter都继承自PagerAdapter 不同点: 卸载不再需fragment时,各自采用的处理方法有所不同 FragmentStatePagerAdapter会销毁不需要的fragment。 FragmentStatePagerAdapter类名中的“state”表明:在销毁fragment时,可在onSaveInstanceState(Bundle)方法中保存fragment的Bundle 因此,FragmentPagerAdapter创建的fragment永远不会被销毁 也就是:在destroyItem()方法中,FragmentStatePagerAdapter调用的是remove() 但是有页面数据需要刷新的情况,不管是页面少还是多,还是要用FragmentStatePagerAdapter,否则页面会因为没有重建得不到刷新 使用如下: 1.

    1.5K20编辑于 2022-09-15
  • 来自专栏青蛙要fly的专栏

    Android技能树 — Fragment总体小结

    mContext = activity; } } 4.Fragment配合ViewPager ViewPager配合Fragment的时候,主要使用FragmentPagerAdapter和FragmentStatePagerAdapter return list.size(); } } 然后ViewPager.setAdapter(xxxx); 但是大家会奇怪为啥有二个Adapter:FragmentPagerAdapter和FragmentStatePagerAdapter FragmentStatePagerAdapter源码: public abstract class FragmentStatePagerAdapter extends PagerAdapter { //'可以看到都是通过remove的方式移除了' this.mCurTransaction.remove(fragment); } } 所以我们知道了FragmentStatePagerAdapter

    1K10编辑于 2024-02-04
  • 来自专栏青蛙要fly的专栏

    Android技能树 — Fragment总体小结

    ViewPager配合Fragment的时候,主要使用FragmentPagerAdapter和FragmentStatePagerAdapter这二个Adapter。 return list.size(); } } 复制代码 然后ViewPager.setAdapter(xxxx); 但是大家会奇怪为啥有二个Adapter:FragmentPagerAdapter和FragmentStatePagerAdapter FragmentStatePagerAdapter源码: public abstract class FragmentStatePagerAdapter extends PagerAdapter { //'可以看到都是通过remove的方式移除了' this.mCurTransaction.remove(fragment); } } 所以我们知道了FragmentStatePagerAdapter

    1.4K20发布于 2019-08-20
领券