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

ViewPager2避坑系列】瞬间暴增数个Fragment

由于Log太长,一屏根本截不完,反正就是很多个Fragment经历了onCreate->onDestory的所有过程; 操作前,只有Fragment2创建并显示,理论上旋转屏幕之后,只有Fragment2...销毁并重建,不会调用其他Fragment;现在问题发生在了,旋转之后有一堆Fragment创建并且销毁,最终保留的也只有Fragment2,这肯定是个Bug,虽然发生在一行代码都没有改的官方Demo上;...Fragment是可以解释通的; 3.1 ViewPager2测量流程 ViewPager2 @Override protected void onMeasure(int widthMeasureSpec...就失去了ItemView一屏显示一个的特性,所以会出现开头说的瞬间暴增多个Fragment现象; 由于ViewPager2配合Fragment使用时,根布局是FrameLayout这个无法改变,解决办法就是不允许出现跟滑动方向相同的维度测量上...6 总结 注意ViewPager2配合Fragment使用时,一旦发现Fragment瞬间暴增的情况,可能是Item尺寸测量的不对,造成这个原因要优先想到UNSPECIFIED,·如果用的LinearLayout

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

    Android ViewPager2 真的香么?

    Google 前段时间出了新品 ViewPager2,据说意在替代旧版 ViewPager,功能更强大使用更方便;真的这么香么,和尚尝试学习一下!...优势 支持 RTL 布局,稍后介绍; 支持垂直方向切换; 支持 Fragment 集合刷新,即 notifyDataSetChanged; ?...版本 ViewPager2 目前处于预览版,还没有合并到主分支,可能还会有一些隐藏小问题,建议大家先尝试一下; implementation 'androidx.viewpager2:viewpager2...:1.0.0-alpha02' 问题 和尚尝试第一步要引入 ViewPager2,而此时就出现一个大问题,如下: ?...小结 和尚在学习过程中发现 ViewPager2 确实有很大优势,只是目前还没有发布到正式版,而且对于版本适配也会有一定难度,对于 Fragment 的懒加载与预加载还有待研究;但是学习体验一下还是很有帮助的

    2.1K31

    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

    1K11

    Now in Android | 12 月刊 · 2019

    Summit 视频回顾 我们于近两个月一直在连载关于 Android Dev Summit 的中文字幕视频,包括《是时候迁移至 AndroidX 了》、《Android Studio 的进展与新功能》和《Fragment...ViewPager2 1.0.0 相比较旧版的 ViewPager,ViewPager2 所做的改进有: 支持 RTL (从右向左) 布局 支持竖直朝向布局 可靠的 Fragment 支持 (包括将变动信息传递给下层的...Fragment 集合) 数据集变化动画 (包括对 DiffUtil 的支持) 从旧版 ViewPager 迁移至 ViewPager2 十分轻松 (我们尽可能确保了 API 的延续性)。...请阅读 ViewPager2 使用指南以了解如何在 Fragment 页面间完成滑动操作。 Transition 1.2.0 如果您的编译目标是 API 29,这次更新对您来说就非常重要。...下面的这些代码库即将在它们的下个版本进入发布候选列表: Activity 1.1.0-rc03 Core 1.2.0-rc01 Fragment 1.2.0-rc04 Lifecycle 2.2.0-rc03

    2K30

    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重新创建。既不剩内存,也不提高性能。

    68320

    ViewPager2实现内部Item的动态滚动

    我们这是一个视频播放页+详情页,考虑到简单快捷,就想到了一个 ViewPager2 就可以实现,简单又快捷,为自己点赞。一想到如此easy,瞬时笑出了猪叫。...当然RecyclerView也可以,用一个仿抖音的那种 LayoutManager 就行,但是为什么不呢,因为涉及到了视频播放,手动去处理一些生命周期和懒加载,总是非常麻烦,而且ViewPager2本身就是基于...就在我以为又可以摸鱼一个ViewPager2就可以搞定之时。突然,产品同学发了新指示,下意识预感不妙。 产品:得加一个第一次使用时的提示啊,要不然用户都不知道页面可以下滑呢?...好家伙,不按套路出牌啊,我故作深沉,实则稳如老狗( ViewPager2 不是有一个 fakeDragBy() 方法设置偏移量吗),这个有点麻烦,我得考虑考虑。...接下来不却知道自己要开启了啪啪打脸时刻,满心欢喜,太easy啊,ViewPager2 真香! 打脸时刻 于是熟练的开分支,切分支,写demo,调用方法,走起! 先看一下这个方法。

    1.6K20

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

    Fragment可以看作是嵌套的Activity,类似ActivityGroup,但是开销肯定没有ActivityGroup那么大,每一个Fragment管理着一个View,Fragment彼此之间相互独立...然后当Activty进入运行状态onResume后,你可以独立的管理每一个Fragment,可以add一个Fragment,也可以remove一个Fragment。...在你执行一个Fragment事务的时候(创建并且显示出来),你可以把这个Fragment放到Fragment回退栈中,这个回退栈记录了所有你执行过的Fragment事务,用户在点击返回键的时候可以从Fragment...Fragment的生命周期: 如果你很清楚Activity的生命周期那么Fragment的生命周期就很容易理解,在Fragment中有很多类似Activity生命周期函数的回调方法,这些方法由Android...onCreateView(): 当Fragment需要第一次绘制用户界面的时候系统调用这个函数完成UI的绘制,你必须在这个函数返回一个View,这个View是Fragment的根View,如果你不想Fragment

    1.2K80

    再谈Fragment

    Fragment 就是一个 Activity 布局的一部分,可以把 Activity 的一部分布局抽离出来到 Fragment 中,并且 Fragment 也可以执行逻辑。...如果用 Fragment 就灵活多了,Activity 只需要根据导航显示对应的 Fragment 就可以了。 如果别的地方需要某一个模块,直接拿出对应的 Fragment 就可以了。...Fragment 相关的三个类 Fragment 具体的 Fragment FragmentManager 是管理 Fragment 的 FragmentTransaction 通过事务来进行添加 Fragment...、隐藏、移除 等操作 Fragment 动作,事务保证了原子性 主要方法 transaction.add() 向 Activity 中添加 Fragment,只是添加 Fragment,不影响之前 Fragment..." /> 在代码中获取的这个 Fragment 通过 Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment

    99920

    你真的会用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
    领券