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

FragmentPagerAdapter是否会自动恢复视图状态?

FragmentPagerAdapter不会自动恢复视图状态。

FragmentPagerAdapter是Android Support库中的一个类,用于在ViewPager中管理Fragment的切换。它的主要作用是提供Fragment的实例化和销毁,并处理Fragment的生命周期。但是,FragmentPagerAdapter并不负责保存和恢复Fragment的视图状态。

当使用FragmentPagerAdapter切换Fragment时,每次都会创建一个新的Fragment实例,并将其添加到ViewPager中。当切换回之前的Fragment时,之前的Fragment实例会被销毁,再次切换回来时会重新创建一个新的Fragment实例。

如果需要在Fragment切换时保持视图状态,可以考虑使用FragmentStatePagerAdapter。与FragmentPagerAdapter不同,FragmentStatePagerAdapter会保存Fragment的状态,并在需要时恢复。这样可以确保在切换回之前的Fragment时,能够恢复到之前的视图状态。

总结:

  • FragmentPagerAdapter不会自动恢复视图状态。
  • 如果需要在Fragment切换时保持视图状态,可以考虑使用FragmentStatePagerAdapter。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux如何查看服务启动状态是否开机自动启动

joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/284 方式一 chkconfig linux中查看服务启动状态是否开机自动启动的方法...: 1、打开linux终端; 2、在终端命令行中输入“chkconfig --list servicename”命令查看服务启动状态是否开机自动启动即可。...方式二 systemctl 1、打开linux终端; 2、在终端命令行中输入“systemctl status servicename”命令查看服务启动状态是否开机自动启动即可。...,此状态是各服务的运行状态 systemctl list-units # 显示systemd当前已经安装的units状态,如/usr/lib/systemd/system/chronyd.service...systemctl list-unit-files # 查看服务的自启动状态以list-unit-files为准 # 但是系统服务太多,我想分类查看该如何做?

13.7K31

Android技能树 — Fragment总体小结

然后网上有很多教程,叫你提交的时候使用commitAllowingStateLoss()方法,虽然说不会抛出错误,但是如果在Activity已经保存状态完之后提交了它,到时候Ativity意外崩溃,再恢复数据的时候就不会恢复在...Activity保存状态之后提交的fragment的更新,造成状态丢失了。...Adapter:FragmentPagerAdapter和FragmentStatePagerAdapter,他们的区别我们可以看具体的源码: FragmentPagerAdapter源码: public...推荐下面这篇文章: [译] 保存/恢复 Activity 和 Fragment 状态的最佳实践 引用一段话: 完全分开处理Fragment状态和view状态 为了使你的代码变得干净和可扩展,你最好把Fragment...状态和View状态分开处理。

1.1K20

Android技能树 — Fragment总体小结

然后网上有很多教程,叫你提交的时候使用commitAllowingStateLoss()方法,虽然说不会抛出错误,但是如果在Activity已经保存状态完之后提交了它,到时候Ativity意外崩溃,再恢复数据的时候就不会恢复在...Activity保存状态之后提交的fragment的更新,造成状态丢失了。...Adapter:FragmentPagerAdapter和FragmentStatePagerAdapter,他们的区别我们可以看具体的源码: FragmentPagerAdapter源码: public...Fragment重建恢复数据 推荐下面这篇文章: [译] 保存/恢复 Activity 和 Fragment 状态的最佳实践 引用一段话: 完全分开处理Fragment状态和view状态 为了使你的代码变得干净和可扩展...,你最好把Fragment状态和View状态分开处理。

19110

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

的destroyItem函数,FragementStatePagerAdapter在destroyItem的时候使用的是remove的方式,这种方式对于没有添加到回退栈的Fragment操作来说,不仅销毁...-- 其实两者的主要区别就是看是否在回退栈,如果在,表现就一致,如果不在,表现不一致--> final boolean inactive = !...--将状态设置为Fragment.CREATED或者Fragment.INITIALIZING--> moveToState(fragment, inactive ?...--查看是否恢复,如果需要,则恢复--> if (mSavedState.size() > position) { Fragment.SavedState fss = mSavedState.get...Fragment集合,只要没有被remove,就会一致存在,可以认为mAdded的Fragment都是活着的,而mActive的Fragment却可能被处决,并被置null,只有makeInactive函数这么做

3.1K20

Android高频面试专题 - 基础篇(二)Fragment

的方法,在此方法中进行保存数据,然后在onCreate或者onCreateView或者onActivityCreated进行恢复都可以。...Fragment,仅仅是设为不可见,并不会销毁 transaction.show() 显示之前隐藏的Fragment detach() 会将view从UI中移除,和remove()不同,此时fragment的状态依然由...FragmentManager维护 attach() 重建view视图,附加到UI上并显示 ransatcion.commit() 提交事务 10、Fragment回退栈 Activity有任务栈,用户通过...如果没有加入回退栈,则用户点击返回按钮直接将Activity出栈;如果加入了回退栈,则用户点击返回按钮回滚Fragment事务。...实现方式是在setUserVisibleHint(boolean isVisibleToUser) 方法中进行判断是否对用户可见,并且保证UI已经初始化onViewCreated(),才开始拉取数据。

1.4K10

从一场空难讲起:自动驾驶汽车是否让人陷入自动化悖论

*半自动操作状态下,人类应该随时准备拿回控制权,但我们准备好了吗? 自鸣得意和技能退化:这是人类的本性,飞行员也不例外 人类是一种习惯动物,随着我们对工作逐渐熟悉,大多数人变得自鸣得意。...随后,人类需要一段时间来恢复全神贯注,要拿回车辆控制权则时间更长,而无论是 3 万米的高空还是拥堵的城市道路,这个反应时间都太长了。...大多数航空公司的安全机制(训练和体检)在自动驾驶时代已经变得不切实际,因此自动化的影响肯定也冲击自动驾驶汽车市场。“Level 3 就是个可怕的点子,汽车制造商真应该赶紧甩掉它。”...举例来说,车载摄像头可以追踪驾驶员的疲劳程度,判断他是否能在紧急时刻反应过来。如果需要,车辆还会通过视觉或听觉警告来唤醒司机。 “研究显示,声音警告比视觉的要有效得多。”Clamann 说道。...如果我们希望汽车知道在什么时候移交控制权,其实就是要求系统能够知道自己的能力范围——了解自己在什么状态下能行,以及什么状态下不行。这是非常困难的事情,甚至对人类来说都不简单,更不用说一台计算机了。

87550

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

尽管不可见的视图有时会被销毁,但用户所有访问过的fragment都会被保存在内存中。因此fragment实例会保存大量的各种状态,这就造成了很大的内存开销。...每一个使用FragmentPagerAdapter的ViewPager都要有一个有效的ID集合,有效ID的集合就是Fragment的集合(感谢夫诸同学的提示) 对于FragmentPagerAdapter...二、具体实现 1、适配器实现——FragmentPagerAdapter 先看完整代码,再细讲: public class FragAdapter extends FragmentPagerAdapter...Toast.LENGTH_SHORT).show(); } }); return view; } } 在onCreateView()中返回要显示的View,上面这段代码简单演示了如何对视图里的控件进行操作...4、可能出现的问题 问题:在MainActivity中,当写到这句:fragments.add(new Fragment1()); 向Fragment列表中添加Fragement对象实例时,提示“无法将

89420

Android入门教程 | Fragment 基础概念

savedInstanceState 参数是在恢复片段时,提供上一片段实例相关数据的 Bundle(处理片段生命周期部分对恢复状态做了详细阐述)。...传递 container 对系统向扩展布局的根视图(由其所属的父视图指定)应用布局参数具有重要意义。 指示是否应在扩展期间将扩展布局附加至 ViewGroup(第二个参数)的布尔值。...然后,FragmentActivity 自动通过 onBackPressed() 从返回栈检索片段。...这是因为如需恢复 Activity,则提交后的状态可能丢失。对于丢失提交无关紧要的情况,请使用 commitAllowingStateLoss()。...注意使用inflater构建View时一定要将attachToRoot指明false,因为Fragment自动视图添加到container中,attachToRoot为true重复添加报错。

3.5K40

android之FragmentPagerAdapter和FragmentStatePagerAdapter

image.png FragmentPagerAdapter FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配器,继承自PagerAdapter...和FragmentPagerAdapter实现。...FragmentPagerAdapter拥有自己的缓存策略,当和ViewPager配合使用的时候,缓存当前Fragment以及左边一个、右边一个,一共三个Fragment对象。...中间的Fragment在整个生命周期里面只会加载一次,当最左边的Fragment处于显示状态,最右边的Fragment由于超出缓存范围,会被销毁,当再次滑到中间的Fragment的时候,最右边的Fragment...FragmentPagerAdapter会对我们浏览过Fragment进行缓存,保存这些界面的临时状态,这样当我们左右滑动的时候,界面切换更加的流畅。但是,这样也增加程序占用的内存。

1.8K20

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

setArguments(Bundle bundle)方式添加,而不建议通过为Fragment添加带参数的构造函数,因为通过setArguments()方式添加,在由于内存紧张导致Fragment被系统杀掉并恢复...onDestroyView():当Fragment的UI从视图结构中移除时调用。 onDestroy():销毁Fragment时调用。...执行队列中的事务怎样被执行呢?就是调用BackStackRecord的run()方法,run()方法就是执行Fragment的生命周期函数,还有将视图添加进container中。...从上面看到,先从mAdded中查找是否有该Fragment,如果没找到,再从mActive中查找是否有该Fragment。...布局XML主要分两个container,一个是初始显示的状态,即R.id.container_empty,当数据加载完成,就显示R.id.container: ?

4.8K122

Fragment新功能,setMaxLifecycle了解一下

简单介绍一下setMaxLifecycle的原理和上手效果; 阅读指南: 本文基于androidx 1.1.0-alpha07版本的fragment进行,也是支持setMaxLifecycle的最低版本 本文根据...FragmentPagerAdapter进行setMaxLifecycle示例应用讲解 基本介绍 setMaxLifecycle定义在FragmentTransaction中,和之前的add、attach...; RESUMED状态 RESUMED表示的状态比较特殊,只代表onResume状态,无论大到小还是小到大,最终都是停留到onResume状态; 以上生命周期状态扭转结论基于FragmentManagerImpl.moveToState...由于篇幅原因,就不一一介绍各种组合情况,只要弄清楚生命周期状态,不论是状态是升还是降,不论组合还是单用,你都可以驾驭; FragmentPagerAdapter变动 由于setMaxLifecycle带来了生命周期设置...,替换掉了老旧的setUserVisibleHint方法,所以在FragmentPagerAdapter中也进行了适配 FragmentPagerAdapter public static final

2.5K40

android FragmentpagerAdapter和FragmentStatePagerAdapter的区别

1.FragmentPagerAdapter FragmentPagerAdapter 继承自 PagerAdapter。...FragmentPagerAdapter 重载实现了几个必须的函数,因此来自 PagerAdapter 的函数,我们只需要实现 getCount(),即可。...且,由于 FragmentPagerAdapter.instantiateItem() 的实现中,调用了一个新增的虚函数 getItem(),因此,我们还至少需要实现一个 getItem()。...instantiateItem() 函数中判断一下要生成的 Fragment 是否已经生成过了,如果生成过了,就使用旧的,旧的将被 Fragment.attach();如果没有,就调用 getItem...instantiateItem() 除非碰到 FragmentManager 刚好从 SavedState 中恢复了对应的 Fragment 的情况外,该函数将会调用 getItem() 函数,生成新的

98290
领券