首页
学习
活动
专区
圈层
工具
发布

ViewPager中Fragment状态保存的哪些事

但当我们重新切换到 1 时,可以发现,Fragment1 中 RecyclerView 的 滚动位置 没有变化,所以可以证明 Fragment 的状态的确是被还原了。 那这是怎么做的呢?...destroyItem() 此方法用于销毁我们的指定Fragment,其内部把当前Fragment的状态根据下标保存到了 mSavedState 中。...的状态信息,并且以下标的方式进行了保存,当我们在滑动 ViewPager 时,其会加载并初始化指定 position 所对应 Fragment ,并将缓存的 Fragment 的状态信息 set 进去...Fragment部分 通过上面的方式,我们可以简单的知道 ViewPager 是如何帮我们进行状态还原与保存,那 Fragment 到底是在什么时候去使用这个状态呢?...key 存到了一个list集合中,然后在调用 getItem() 初始化Fragment时,其会将之前保存的状态重新 set 给我们的 Fragment 实例。

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android中Fragment+ViewPager的配合使用

    官方推荐 ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期,这里有标准的适配器实现用于ViewPager和Fragment,涵盖最常见的用例。...(savedInstanceState);         //这里我只是简单的用num区别标签,其实具体应用中可以使用真实的fragment对象来作为叶片         mNum = getArguments...效果与ViewPager中添加View的效果是一样的!但是它与View的区别在于它有自己的生命周期,可以随时更改自己的状态便于管理。...事实上使用FragmentPagerAdapter 时,Fragment对象会一直存留在内存中,所以当有大量的显示页时,就不适合用FragmentPagerAdapter了,FragmentPagerAdapter...的状态,下次Fragment显示时通过onCreate(Bundle savedInstanceState)把存储的状态值取出来,FragmentStatePagerAdapter 比较适合页面比较多的情况

    1.4K100

    ViewPager2与Fragment

    Fragment生命周期 AndroidX之前的Fragment 在AndroidX之前的Fragment , 由于配合ViewPager使用 , 在Fragment添加到ViewPager上后 ,...于是 , 在配合setOffscreenPageLimit预加载的时候 , 由于早期版本的ViewPager至少需要预加载右侧一个页面 , 所以导致在实现懒加载的过程中需要通过 : setUserVisibleHint...: 当Fragment显示/不可见的时候会回调显示状态(isVisible) onResume : 在该回调中判断当前Fragment是否可见 , 如果可见的话 , 进行懒加载 只有通过以上两个方法来进行懒加载...ViewPager2与Fragment配合使用 在ViewPager2中 , 官方将Fragment的生命周期纠正了 , 可以随着ViewPager2的左右切换来回调Fragment当前的状态....以下是ViewPager2与Fragment配合的代码 , 在生命周期中加入Log.

    3.1K20

    ViewPager与Fragment那些事儿

    本文会讲解: 1.viewPager与Fragment使用过程中,偶现页面混乱问题的可能原因以及解决方案。...2.notifyDataSetChange方法在viewPager中不起作用的问题的解决方案。 3.通过修改FragmentPagerAdapter,避免Fragment被过度持有。...4.探讨viewPager中mOffscreenPageLimit的作用。 一:背景 最近开发一个需求,页面UI大致如下: ? 要求每一个tab都可以对应一个全新的子页面。...很自然的想到使用ViewPager+Fragment这一对组合,其中Fragment复用于子页面和主页面中的tab内容。...因为之前看到微码上有人分享了一个在这种viewpager场景下懒加载fragment的代码,会想到为什么不在这个地方对组件进行微调,以达到每次都只加载一个fragment的效果?

    1.1K80

    ViewPager 详解(五)—–使用Fragment实现ViewPager滑动

    前言:前几篇文章讲解了ViewPager的普通实现方法,但android官方最推荐的一种实现方法却是使用fragment,下面我们使用fragment来重新实现一下第一篇《ViewPager 详解(一)...添加标题栏的异同》 4、《ViewPager 详解(四)—-自主实现滑动指示条》 其它相关文章: 5、《Android Fragment完全解析,关于碎片你所需知道的一切》 6、《fragment中嵌套...这个适配器最好用于有限个静态fragment页面的管理。尽管不可见的视图有时会被销毁,但用户所有访问过的fragment都会被保存在内存中。...然后在getItem(int arg0)中,根据传来的参数arg0,来返回当前要显示的fragment,下面是getItem的官方解释,难度不大,不再细讲。...4、可能出现的问题 问题:在MainActivity中,当写到这句:fragments.add(new Fragment1()); 向Fragment列表中添加Fragement对象实例时,会提示“无法将

    2.2K20

    android ViewPager+Fragment之懒加载

    说说写这篇博客的背景吧,前两天去面试,问到一个问题说的是:比如我们首页,是有3个fragment构成的,并且要是实现作用可以滑,那么这个最好的选择就是ViewPager+fragment了,但是我们知道...ViewPager+fragment是做预加载的,然而这种方法有一个坏处,当前页面和预加载页面都有大量的网络请求,可能就会比较慢,这样就会造成不好打体验。...其实我们忽略的一个问题,Android的fragment里面已经帮我们提供了一个方法setUserVisibleHint。setUserVisibleHint()来显示与隐藏Fragment的。...isVisibleToUser; } 但是setUserVisibleHint优于onCreate调用,所以当onCreate调用完毕setUserVisibleHint就不会触发,这时需要在首个显示的fragment...:当前UI可见,并且fragment已经初始化完毕,如果网络数据未加载,那么请求数据,或者需要强制刷新页面,那么再去请求页面数据,这样就达到了本文开始需要的要求。

    1K80

    【Android】ViewPager2与Fragment的组合

    三三要成为安卓糕手 一:需求 实现像抖音这种界面,左滑可以进入商城,关注,右滑…;顶部的选择,随着页面的滑动而改变;反之亦是如此 二:使用方法 1:定义、依赖、继承关系 本质是一个容器,在xml布局中Fragment 虽然BlueFragment关联的xml布局中高度设置的为wrap但是viewpager的match_parent会改变我们当前视图的高度 (2)getItemCount...创建几个收纳这样的Fragment的页面 2:设置方向 viewPager.setOrientation(ViewPager2.ORIENTATION_VERTICAL); ViewPager2中自带常量...ViewPager与不同的Fragment怎么关联 1:使用集合 思路很简单,弄一个放Fragment的ArrayList(容器),用下标关联ArrayList中的Fragment和RadioButton...核心代码不多:如下;Fragment关联的页面自己diy去 ArrayListFragment> fragments = new ArrayList(); fragments.add

    56510

    【Android】Fragment懒加载和ViewPager的坑

    ViewPager + Fragment 的坑 ViewPager为了让滑动的时候可以有很好的用户的体验,也就是防止出现卡顿现象,因此它有一个缓存机制。...默认情况下,ViewPager会提前创建好当前Fragment旁的两个Fragment,举个例子说也就是如果你当前显示的是编号3的Fragment,那么其实编号2和4的Fragment也已经创建好了,也就是说这...日志图1 本来Fragment的 onResume()表示的是当前Fragment处于可见且可交互状态,但由于ViewPager的缓存机制,它已经失去了意义,也就是说我们只是打开了“福利”这个Fragment...* https://github.com/woshidasusu/Meizi * * Viewpager + Fragment情况下,fragment的生命周期因Viewpager的缓存机制而失去了具体意义...(boolean)}一致 * 在该回调方法中你可以做一些加载数据操作,甚至是控件的操作,因为配合fragment的view复用机制,你不用担心在对控件操作中会报 null 异常 *

    2.6K20

    ViewPager2+Fragment操作笔记

    他们偶尔会搭配TabLayout一起使用,相关代码直接阅读或者运行 ViewPager2官网Samples 即可,这里不做重复的讲解。 下面主要讲一下在使用过程中遇到的问题~!...requestDisallowInterceptTouchEvent(false) } } } ViewPager2中Fragment的懒加载 懒加载 一般我们使用Fragment...hidden) { onUserVisible(); } else { onUserGone(); } } 但在ViewPager2中,Fragment的setUserVisibleHint...更新数据的时候遇到的崩溃: Fragment already added 重写getItemId方法,该方法返回的值与数据有关而不是与数据在列表中的索引有关。...使用:ViewPager2官网Samples DiffUtil 局部更新 DiffUtil和它的差量算法 总结 本文主要介绍了ViewPager2配合Fragment的使用方法以及在使用过程中需要注意的问题

    4.8K31

    Android底部导航——BottomNavigationView+ViewPager+Fragment

    Android端的底部导航栏有着一套规范,详情 这篇文章为大家带来 1.官方BottomNavigationView的使用方法 2.结合ViewPager、Fragment实现一个流行UI布局!...3.并用反射解决ViewPager与BottomNavigationView侧滑联动时的一个小问题。...开始 1.新建project然后导入以下support:design library,BottomNavigationView就在这个design库中。...顺带导入这个V4包,因为待会要使用到ViewPager(这里其实不用记这么麻烦的库跟版本怎么写,直接在AS 的design面板把控件拖进来就会自动导入了。)...(adapter); } } 可以看到BottomNavigationView+ViewPager+Fragment可以实现流行的布局框架,可以像微信那样左右滑动,也可以像支付宝那样点击切换

    5.7K21

    4-AVI--Fragment与ViewPager结合

    零、前言 [1].认真看下图Fragment在ViewPager里的默认生命周期(可在浏览器中单独打开网页查看动图,清晰很多) [2].名字数据随机获取见:随机数据生成 [3].ViewPager...的默认加载模式见: ViewPager的基本使用 [4].Fragment实现懒加载,ViewPager的实现见: ViewPager的基本使用 大致过程 打开:创建0,1页 左滑:创建2,...fragment在Viewpager中的生命周期.gif ---- 一、代码实现: 1.ViewPagerFragment /** * 作者:张风捷特烈 * 时间:2018/8/29 0029...:11:25 * 邮箱:1981462002@qq.com * 说明:ViewPager和Fragment集合测试的Fragment */ public class ViewPagerFragment...> fragment_viewpager <RelativeLayout xmlns:android="http://schemas.android.com/apk/res

    81830
    领券