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

    android之FragmentPagerAdapter和FragmentStatePagerAdapter

    image.png FragmentPagerAdapter FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配器,继承自PagerAdapter 和FragmentPagerAdapter实现。 FragmentPagerAdapter拥有自己的缓存策略,当和ViewPager配合使用的时候,会缓存当前Fragment以及左边一个、右边一个,一共三个Fragment对象。 FragmentPagerAdapter会对我们浏览过Fragment进行缓存,保存这些界面的临时状态,这样当我们左右滑动的时候,界面切换更加的流畅。但是,这样也会增加程序占用的内存。 代码实例: FragmentPagerAdapter adapter = new FragmentPagerAdapter( getSupportFragmentManager

    2.2K20发布于 2020-12-09
  • 来自专栏全栈程序员必看

    FragmentPagerAdapter刷新notifyDataSetChanged无效

    复写pageradapter的getItemPosition方法设置tag为POSITION_NONE意思是没有找到child要求重新加载。

    1.6K20编辑于 2022-09-07
  • 来自专栏向治洪

    android FragmentpagerAdapter和FragmentStatePagerAdapter的区别

    1.FragmentPagerAdapter FragmentPagerAdapter 继承自 PagerAdapter。 FragmentPagerAdapter 重载实现了几个必须的函数,因此来自 PagerAdapter 的函数,我们只需要实现 getCount(),即可。 且,由于 FragmentPagerAdapter.instantiateItem() 的实现中,调用了一个新增的虚函数 getItem(),因此,我们还至少需要实现一个 getItem()。 FragmentPagerAdapter 会将所有生成的 Fragment 对象通过 FragmentManager 保存起来备用,以后需要该 Fragment 时,都会从 FragmentManager 2.FragmentStatePagerAdapter FragmentStatePagerAdapter 和前面的 FragmentPagerAdapter 一样,是继承子 PagerAdapter

    1.2K90发布于 2018-02-01
  • 来自专栏Linux技术资源分享

    ViewPager使用FragmentPagerAdapter适配器

    然而我找到了一个比较推荐的方法:ViewPager使用FragmentPagerAdapter适配器。 FragmentPagerAdapter派生自PagerAdapter,它是用来呈现Fragment页面的。 ---- ****适配器实现 - FragmentPagerAdapter**** /** * Home页面的适配器adapter * Created by alic on 16-4-30. */ public class HomeFragmentAdapter extends FragmentPagerAdapter{ private List<Fragment> fragmentList

    3.2K30发布于 2018-06-08
  • 来自专栏移动开发

    FragmentPagerAdapter 滑动过后界面不显示的解决方案

    最近工作中UI给出如图设计,心想这个结合viewpager,fragment,FragmentPagerAdapter就能构建出来. ? 出乎意料啊,赶紧看下FragmentPagerAdapter 官方文档 Implementation of PagerAdapter that represents each page as a Fragment 结合其他google结果,大致意为FragmentPagerAdapter中所创建出来的fragment会被fragment manager保存,也即在内存中. 结论:FragmentPagerAdapter和viewpager滑动白屏无数据,是由于恢复内存中的fragment的数据丢失,需要自己做手动数据保存,这样才能避免此情况的出现.

    1.3K30发布于 2018-10-18
  • 来自专栏计算机工具

    Fragment 知识梳理, FragmentPagerAdapter ,RecyclerView 知识梳理,sharepreference,IntentService,service交互

    会保存左右各一个界面,采用栈存储信息,page1234,从2开始滑动到3,会删除1,添加4,从OnCreateview开始OnDestoryView结束。第一次添加会从生命周期开始走,OnCreate。

    26400编辑于 2024-12-16
  • 来自专栏Android技术分享

    Fragment新功能,setMaxLifecycle了解一下

    setMaxLifecycle的原理和上手效果; 阅读指南: 本文基于androidx 1.1.0-alpha07版本的fragment进行,也是支持setMaxLifecycle的最低版本 本文会根据FragmentPagerAdapter 由于篇幅原因,就不一一介绍各种组合情况,只要弄清楚生命周期状态,不论是状态是升还是降,不论组合还是单用,你都可以驾驭; FragmentPagerAdapter变动 由于setMaxLifecycle带来了生命周期设置 ,替换掉了老旧的setUserVisibleHint方法,所以在FragmentPagerAdapter中也进行了适配 FragmentPagerAdapter public static final (@NonNull FragmentManager fm) { this(fm, BEHAVIOR_SET_USER_VISIBLE_HINT); } public FragmentPagerAdapter (getSupportFragmentManager(),FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) 总结 破事水了小半天,本文到底说了什么内容

    2.9K40发布于 2019-05-17
  • 来自专栏学海无涯

    Android开发之ViewPager+Fragment

    Fragment>(); fragmentContainter.add(f1); fragmentContainter.add(f2); fragmentContainter.add(f3); 3、用FragmentPagerAdapter 关联上面的Fragment和ViewPager, FragmentPagerAdapter (android.support.v4.app.FragmentPagerAdapter) 继承自 PagerAdapter 我们只需要实现 getCount() 和 getItem()即可,从getItem()可以看出,它返回的是v4的Fragment,所以2中的问题答案就在这里了~~ pager.setAdapter(new FragmentPagerAdapter return fragmentContainter.get(arg0); } }); 这样就可以实现滑动Fragment 重要的话 PageAdapter 是 FragmentPagerAdapter FragmentStatePagerAdapter 和 FragmentPagerAdapter 的区别: FragmentPagerAdapter使用时,每一个生成的 Fragment 都将保存在内存之中

    87850发布于 2018-04-24
  • 来自专栏Android源码框架分析

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

    不由得有些好奇,随跟踪了部分源码,简单整理如下: ViewPager+FragmentPagerAdapter为何不能通过setAdapter做到整体刷新 第二次设置PagerAdapter的时候,首先会将原来的 为什么呢,因为第二次setAdapter的时候,已经被FragmentManager缓存的Fragent不会被新建,也不会被刷新,因为FragmentPagerAdapter在调用destroy的时候, FragmentPagerAdapter如何通过notifyDataSetChanged刷新ViewPager FragmentPagerAdapter中的数据发生改变时,往往要重新将数据设置到Fragment 并且到这里我们也知道了,对于FragmentPagerAdapter来说,用户完全不需要自己缓存Fragment,只需要缓存View,因为FragmentPagerAdapter不会销毁Fragment 作者:看书的小蜗牛 原文链接:ViewPager刷新问题原理分析及解决方案(FragmentPagerAdapter+FragementStatePagerAdapter) 仅供参考,欢迎指正

    3.6K20发布于 2018-06-29
  • 来自专栏Android学习之路

    ViewPager 获取当前显示的Fragment

    Viewpager 获取当前显示的fragment 使用 getSupportFragmentManager().findFragmentByTag()方法 Viewpager + FragmentPagerAdapter 情况下 才好使; FragmentPagerAdapter 有一个特点 凡是加载过的Fragment 都会被保留,既然Fragment不会被销毁,那我们就可以使用findFragmentByTag() 方法找到它;但问题是动态创建的话 tag的设置;我们知道动态加载时是可以设置tag的,但是动态创建就没法设置了;如果viewpager使用的是适配器是 FragmentPagerAdapter 的话      固定部分 switcher :      固定部分 2131492976 :      ViewPager 的id 0 :      ViewPager 当前显示的itemPostion 既然FragmentPagerAdapter 就可以利用这个特点通过 findFragmentByTag() 找到这个Fragment //Viewpager + FragmentPagerAdapter 情况下 获取 当前显示的Fragment,

    4.3K80发布于 2018-05-22
  • 来自专栏全栈程序员必看

    ViewPager 详解(五)—–使用Fragment实现ViewPager滑动[通俗易懂]

    第二页面向第三个页面滑动 一、概述 从前面几篇文章,我们知道,实现ViewPager是要有适配器的,我们前面用的适配器是PagerAdapter,而对于fragment,它所使用的适配器是:FragmentPagerAdapter When using FragmentPagerAdapter the host ViewPager must have a valid ID set. 译文:(译的不好,大家可在评论中补充) FragmentPagerAdapter派生自PagerAdapter,它是用来呈现Fragment页面的,这些Fragment页面会一直保存在fragment 每一个使用FragmentPagerAdapter的ViewPager都要有一个有效的ID集合,有效ID的集合就是Fragment的集合(感谢夫诸同学的提示) 对于FragmentPagerAdapter 二、具体实现 1、适配器实现——FragmentPagerAdapter 先看完整代码,再细讲: public class FragAdapter extends FragmentPagerAdapter

    2.2K20编辑于 2022-09-15
  • 来自专栏Android知识分享

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

    用相应的适配器Adapter关联上面的页卡(View/Fragment)和ViewPager: PagerAdapter 数据源:List FragmentPagerAdapter 数据源:List FragmentStatePagerAdapter ; public class MyFragmentAdapter extends FragmentPagerAdapter { List<Fragment> list; public MyFragmentAdapter viewPager.setOnPageChangeListener(new MyOnPageChangeListener());//设置页面切换时候的监听器(可选,用了之后要重写它的回调方法处理页面切换时候的事务) FragmentPagerAdapter FragmentStatePagerAdapter 和 FragmentPagerAdapter 的异同: 同 PageAdapter 是 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter 异 FragmentPagerAdapter使用时,每一个生成的 Fragment

    83910编辑于 2022-03-24
  • 来自专栏Android知识分享

    Android开发:ViewPage最详细教程

    用相应的适配器Adapter关联上面的页卡(View/Fragment)和ViewPager: PagerAdapter 数据源:List FragmentPagerAdapter 数据源:List ; public class MyFragmentAdapter extends FragmentPagerAdapter { List<Fragment> list; public 的滑动接口OnPageChangeListener()如何使用,请看我写的另外一篇文章:Android开发:ViewPage滑动接口最详细解析 FragmentStatePagerAdapter 和 FragmentPagerAdapter 的异同: 同 PageAdapter 是 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类,可将上面的FragmentPagerAdapter 替换成FragmentStatePagerAdapter 异 FragmentPagerAdapter使用时,每一个生成的 Fragment 都将保存在内存之中,而 FragmentStatePagerAdapter

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

    Android中Fragment+ViewPager的配合使用

    FragmentPagerAdapter和FragmentStatePagerAdapter这两个类都有简单的代码显示如何构建一个完整的用户界面与他们。 android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter ; /**  * 自定义fragment适配器  * @author ZHF  *  */ public class MyFragmentPageAdapter extends FragmentPagerAdapter 事实上使用FragmentPagerAdapter 时,Fragment对象会一直存留在内存中,所以当有大量的显示页时,就不适合用FragmentPagerAdapter了,FragmentPagerAdapter

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

    关于Android导航页开发的体会

    于是改变想法,采用 了底部大类导航栏加顶端Tab小类导航加ViewPager的导航模式,有点像微信的导航模式(某种程度上来 说有完全不像,笑),主要涉及到ViewPager,Fragment,FragmentPagerAdapter 布局中(注意设置layout_weight以保证占满屏幕) 中间的分割线可以考虑通过ImageView来实现(设置高度1dp,background为灰) 小类下的细分(使用ViewPager+FragmentPagerAdapter 实现) 顶端的两个Tab可以考虑使用TextView+绘制滑动条来实现 重写FragmentPagerAdapter: public class MyFragmentPagerAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> fragmentsList; public MyFragmentPagerAdapter

    57920编辑于 2022-09-02
  • 来自专栏腾讯云开发者社区头条

    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 这里就实现类似微信那种效果,整个UI布局为:底部用PagerBottomTabStrip项目实现,上面是ViewPager,使用FragmentPagerAdapter

    2.3K00发布于 2017-07-26
  • 来自专栏Android中高级开发

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

    而且呢Google非常贴心的提供了两个类FragmentPagerAdapter和FragmentStatePagerAdapter来应付那些一般场景。 和FragmentStatePagerAdapter,我们这节分析FragmentPagerAdapterFragmentPagerAdapter也是个抽象类, * */ public abstract class FragmentPagerAdapter extends PagerAdapter { private static final String TAG = "FragmentPagerAdapter"; private static final boolean DEBUG 关于FragmentPagerAdapter以及FragmentStatePagerAdapter的不同,我这里再总结一下。

    2.1K10发布于 2018-08-07
  • 来自专栏Android理论

    ViewPager嵌套fragment

    ViewPager嵌套Fragment 新建4个Fragment; 新建ViewPagerAdapter继承FragmentPagerAdapter; public class ViewpagerAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> arrayList; public ViewpagerAdapter

    1.1K60编辑于 2021-12-21
  • 来自专栏Android技术分享

    Android面试题避坑:ViewPager中的Framgent如何实现懒加载?

    的懒加载更加科学,可以配合 Livedata 等组件在MVVM架构中使用 setMaxLifeCycle 无需额外定义 Fragment 基类,使用起来更加无侵 使用 setMaxLifecycle 进行懒加载 FragmentPagerAdapter 的构造方法新增了一个 behavior 参数, 当被设置为FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT时,会通过setMaxLifecycle fm: FragmentManager, behavior: Int, val fragmentList: List<Fragment> ) : FragmentPagerAdapter ) = fragmentList.size override fun getItem(position: Int) = fragmentList[position] } } FragmentPagerAdapter //FragmentPagerAdapter.java public FragmentPagerAdapter(@NonNull FragmentManager fm, @Behavior

    1.2K60发布于 2021-05-13
  • 来自专栏陶士涵的菜地

    [android] 练习viewpagerindicator的使用(二)

    .app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter (vp_content, 0); } } /** * 标签部分适配器 * * @author taoshihan * */ class TabAdapter extends FragmentPagerAdapter

    42730发布于 2019-09-10
领券