首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ViewPager中Fragment状态保存的哪些事

状态信息,并且以下标的方式进行了保存,当我们在滑动 ViewPager 时,其会加载并初始化指定 position 所对应 Fragment ,并将缓存的 Fragment状态信息 set 进去...Fragment部分 通过上面的方式,我们可以简单的知道 ViewPager 是如何帮我们进行状态还原与保存,那 Fragment 到底是在什么时候去使用这个状态呢?...所以我们直接去看看到底是在哪里调用了此方法,也就知道 Fragment 是怎么还原状态的。...的状态会被主动还原,主要原因是: Fragment 销毁时,会调用 destoryItem 方法,adapter内部会主动保存了当前的 Fragment 状态,并以当前下标作为 key 存到了一个list...集合中,然后在调用 getItem() 初始化Fragment时,其会将之前保存的状态重新 set 给我们的 Fragment 实例。

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

    全新的 Fragment: 使用新的状态管理器

    有很多条件逻辑可以控制 fragment 真正所处的状态,Activity 的生命周期状态 (或者对于嵌套的 Fragment 父级所处的状态) 仅仅是第一步,它可以作为 Fragment 所处状态的上限标准...该方法追踪所有当前的状态并且决定 Fragment 应该处于哪个状态。...然而,有一种情况下我们没有办法确定 Fragment 的实际状态: 延迟加载的 Fragment。...换而言之,任何与当前被延迟加载的 Fragment 相关的 FragmentTransaction 都会被回退到之前的状态 (比如返回到上一状态),但是这些 Fragment 并没有转换为合适的状态。...仅仅包含用于所有 fragment状态 FragmentStateManager 在 fragment 层面管理状态 SpecialEffectsController 在容器层面管理状态 职责分离的设计结构使我们扩展了

    99940

    全新的 Fragment: 使用新的状态管理器

    新的状态管理器负责很多 Fragment 的关键环节: 在生命周期方法中移动 Fragment 添加动画和切换效果 处理推迟后的事务 我们从底层分析了原本系统的实现机制,发现有一些 问题,所以重写了状态管理器...有很多条件逻辑可以控制 fragment 真正所处的状态,Activity 的生命周期状态 (或者对于嵌套的 Fragment 父级所处的状态) 仅仅是第一步,它可以作为 Fragment 所处状态的上限标准...该方法追踪所有当前的状态并且决定 Fragment 应该处于哪个状态。...然而,有一种情况下我们没有办法确定 Fragment 的实际状态: 延迟加载的 Fragment。...换而言之,任何与当前被延迟加载的 Fragment 相关的 FragmentTransaction 都会被回退到之前的状态 (比如返回到上一状态),但是这些 Fragment 并没有转换为合适的状态

    99530

    activity嵌套fragmentfragment内嵌fragment之间传值切换fragment

    至于fragment的用法,fragment+viewpager的滑动切换代码请参考博文 Android基础:翻页控件Viewpager的使用方法,viewpager+fragment混合使用 fragment...与Activity 当在使用activity嵌套fragmentfragment再嵌套子fragment时,相当于有两层fragment,假设最外层为第一层,其中一个Fragment为ParentfragmentA...,该ParentFragmentA中又嵌套了三个fragment,也就是说第二层为ChildFragment1,ChildFragment2,ChildFragment3,如果想在其中一个子fragment...中的控件点击切换到同一层的另一个子fragment 如图,在第二层fragment中,child1fragment中有两个控件viewI和viewII,点击viewI可以切换到同一层的fragment...是另一个fragment的子fragment,则获取到的是父fragment的manager getChildFragmentManager方法:获取到外层fragment的子fragment的manager

    1.1K11

    Fragment

    区别 二、Fragment的生命周期 三、Fragment的通信 四、Fragment的replace、add、remove 五、Fragment的管理器FragmentManager 一、Fragment...为何被称为第5大组件 1、为何称为第5组件 1)、fragment具有生命周期 2)、fragment比activity更节省内存,ui的切换效果也更加的舒适; 3)、但是fragment必须依附于...三、Fragment的通信 四、Fragment的replace、add、remove 1、add()是将Fragment实例添加到activity的Fragment队列的最上层 2、remove(...)是将Fragment实例从到activity的Fragment队列中删除 3、replace:内部线remove(实例会被回收掉)然后再add,会始终保持fragment栈中只有一个fragment...因为,detach不会回收fragment,但是会回收fragment中的view。atach会将fragment中的view重新创建。既不剩内存,也不提高性能。

    69020

    【Android基础】Fragment 详解之Fragment介绍

    Fragment可以看作是嵌套的Activity,类似ActivityGroup,但是开销肯定没有ActivityGroup那么大,每一个Fragment管理着一个View,Fragment彼此之间相互独立...比如Activity进入paused状态,那么多有附在这个Activity的Fragment都会进入paused状态,当Activity被销毁时,所有附在这个Activity的Fragment也都会销毁...然后当Activty进入运行状态onResume后,你可以独立的管理每一个Fragment,可以add一个Fragment,也可以remove一个Fragment。...在你执行一个Fragment事务的时候(创建并且显示出来),你可以把这个Fragment放到Fragment回退栈中,这个回退栈记录了所有你执行过的Fragment事务,用户在点击返回键的时候可以从Fragment...onPause(): 当离开Fragment时系统会首先调用这个函数,在这个函数中你需要保存用户的状态类似在Activity的onPause方法中做的工作。

    1.2K80

    再谈Fragment

    Fragment 就是一个 Activity 布局的一部分,可以把 Activity 的一部分布局抽离出来到 Fragment 中,并且 Fragment 也可以执行逻辑。...Fragment 相关的三个类 Fragment 具体的 Fragment FragmentManager 是管理 Fragment 的 FragmentTransaction 通过事务来进行添加 Fragment...、隐藏、移除 等操作 Fragment 动作,事务保证了原子性 主要方法 transaction.add() 向 Activity 中添加 Fragment,只是添加 Fragment,不影响之前 Fragment...和 remove 不同的是,此时 Fragment状态依然由 FragmentManager 维护 attach() 重建 view 视图,附加到UI上显示 .addToBackStack() 是将事务放入回退栈..." /> 在代码中获取的这个 Fragment 通过 Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment

    1K20

    Fragment初识

    之前没有调用addToBackStack()方法将 Fragment添加到back栈中的话;又或者退出了Activity的话,那么Fragment将会被完全结束, Fragment会进入销毁状态 onPause...另外不建议在Fragment里面 嵌套Fragment因为嵌套在里面的Fragment生命周期不可控!!!...的生命周期和Activity有点类似: 三种状态: Resumed:在允许中的Fragment可见 Paused:所在Activity可见,但是得不到焦点 Stoped: ①调用addToBackStack...(),Fragment被添加到Bcak栈 ②该Activity转向后台,或者该Fragment被替换/删除 ps:停止状态fragment仍然活着(所有状态和成员信息被系统保持着),然而,它对用户...如果允许用户通过back键退回到前一个Fragment状态,调用commit()之前可以加入addToBackStack()方法 我们需要注意的是,Fragment以ID或Tag作为唯一标识,所以remove

    1.2K20

    你真的会用Fragment了么?-Fragment解析

    我们可以唉Activity中随意的使用Fragment,当你的一个界面业务逻辑很复杂的时候,我们可以将逻辑写到Fragment中,这样就不必在Activity写一堆控件的事件处理的代码了,Fragment...Fragment生命周期 Fragment生命周期和Activity生命周期类似,只是比Activity多了几个回调方法而已。...Fragment使用 Fragment使用分为两种:静态和动态 静态使用Fragment 所谓静态使用指的就是将自定义的Fragment写到xml布局文件中,利用</fragment...动态使用Fragment 动态使用Fragment就是手动在代码中添加、更新、删除Fragment。...下面我们来看一下在使用Fragment时遇到的那些坑吧: 对于FragmentManager我们应该知道它的作用,它用来维护Fragment队列,以及Fragment事务的回退栈。

    1.5K10

    Fragment基本使用

    运行状态:碎片可见时,关联活动处于运行状态,其也为运行状态 暂停状态:活动进入暂停状态,相关联可见碎片就会进入暂停状态 停止状态:活动进入停止状态,相关联碎片就会进入停止状态,或者通过FragmentTransaction...的remove()、replace()方法将碎片从从活动中移除,但如果在事务提交之前调用addToBackStack()方法,这时的碎片也会进入到停止状态。...销毁状态:当活动被销毁,相关联碎片进入销毁状态。...或者调用FragmentTransaction的remove()、replace()方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack()方法,碎片也会进入到销毁状态。...的状态依然由FragmentManager维护 attach():重建view视图,附加到UI上并显示。

    1.9K30
    领券