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

使用FragmentStateAdapter删除viewPager2中的片段,但仍显示

在使用FragmentStateAdapter删除ViewPager2中的片段后,仍然显示的问题可能是由于以下几个原因导致的:

  1. 缓存问题:ViewPager2默认会缓存当前片段及其相邻的片段,以提高滑动的流畅性。当删除片段后,如果该片段仍然存在于缓存中,那么它仍然会显示出来。解决这个问题的方法是手动清除缓存,可以通过调用ViewPager2的setOffscreenPageLimit(0)方法来禁用缓存。
  2. 数据源更新问题:如果删除片段后没有及时更新数据源,那么ViewPager2可能会继续显示已经删除的片段。确保在删除片段后,更新数据源并调用notifyDataSetChanged()方法来通知ViewPager2数据源已经改变。
  3. 生命周期问题:片段的生命周期与ViewPager2的生命周期相关联。如果删除片段后没有正确处理片段的生命周期,那么它可能仍然会显示出来。确保在删除片段后,调用片段的onDestroy()方法来销毁片段。

综上所述,要解决使用FragmentStateAdapter删除ViewPager2中的片段后仍然显示的问题,可以尝试以下步骤:

  1. 禁用缓存:在ViewPager2初始化时,调用setOffscreenPageLimit(0)方法来禁用缓存。
  2. 更新数据源:在删除片段后,及时更新数据源,并调用notifyDataSetChanged()方法来通知ViewPager2数据源已经改变。
  3. 处理生命周期:在删除片段后,确保调用片段的onDestroy()方法来销毁片段。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ViewPager2:官方Viewpager升级版来临

目前还只是推出了第一个预览版,我们可以直接引入来使用了: implementation 'androidx.viewpager2:viewpager2:1.0.0-alpha01' 我们先来看看有哪些功能和使用变化...其实在此之前也不乏有大神采用RecyclerView来实现轮播图效果,具体实现发生略有不同,大体思想是一致。这次ViewPager2推出意味着这种方法终于被扶正了。...PagerSnapHelper作用让滑动结束时使当前Item居中显示,并且 限制一次只能滑动一页,不能快速滑动,这样就和viewpager交互很像了。...另外和viewpager一样,viewpager2可以承载fragment,我们需要继承实现它提供FragmentStateAdapter: public abstract class FragmentStateAdapter...小结 viewpager2利用recyclerview来实现viewpager功能,无疑使使其可扩展性大大提升,代码也变得更优雅简洁,使用起来也更灵活。

1.7K10

ViewPager2+Fragment操作笔记

ViewPager2更多是配合Fragment使用,这需要借助于FragmentStateAdapter。...他们偶尔会搭配TabLayout一起使用,相关代码直接阅读或者运行 ViewPager2官网Samples 即可,这里不做重复讲解。 下面主要讲一下在使用过程遇到问题~!...requestDisallowInterceptTouchEvent(false) } } } ViewPager2Fragment懒加载 懒加载 一般我们使用Fragment...,供后面placeFramentInViewholder使用; gcFragments回收已经不再使用Fragment(对应item已经删除),节省内存开销。...使用ViewPager2官网Samples DiffUtil 局部更新 DiffUtil和它差量算法 总结 本文主要介绍了ViewPager2配合Fragment使用方法以及在使用过程需要注意问题

4.2K31
  • Android开发笔记(一百七十二)第二代翻页视图ViewPager2

    notifyItem***方法,从而动态刷新某项视图; 3、除了当前页,也支持展示左右两页部分区域; 4、支持在翻页过程展示自定义切换动画; 虽然ViewPager2增加了这么棒功能,但它用起来非常简单...撤销刚加边缘特效代码,再给测试页面的Java代码补充下面几行:     // ViewPager2支持在翻页时展示切换动画     // 创建页面转换器,用于计算切换动画各项参数     ViewPager2...原先ViewPager采用翻页适配器叫做FragmentStatePagerAdapter,而ViewPager2采用了FragmentStateAdapter,两个适配器名称差了个“Pager”。...一看名称不同,用法肯定有差别,尽管它俩都支持碎片Fragment,具体方法就不一样了。...比如下面是采用FragmentStateAdapter新型适配器代码例子: public class MobilePagerAdapter extends FragmentStateAdapter {

    2.3K30

    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.

    2.7K20

    ViewPager2打造轮播Banner

    [效果图] 上图是天津地铁APPBanner也是本文要实现效果 一、如何使用ViewPager2 ①在app下build.gradle文件添加如下依赖implementation "androidx.viewpager2...③图中可以看出item布局需要圆角,实现方案有很多,这里选择使用官方提供ShapeableImageView实现它圆角需要写一个style ④我们都知道ViewPager2适配器和RecyclerView...使用一样,这里就不贴代码了 ⑤最后我们给ViewPager2设置上adapter即可 二、轮播图左右无线滑动 数据源第一位add最后一张图val newList = arrayListOf<String...这里采用了viewpostDelayed方法进行实现 mLooper是我定义Runnable,后面会讲原因 滑动实现了,启停时机也很重要 所以这里选用onWindowFocusChanged因为它在窗体失去和获得焦点时候会通知我们...我们知道触摸调用setOnTouchListener即可,但是给ViewPager2使用时候你会发现不起作用。

    1.8K30

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

    作者:HitenDev 链接:https://juejin.im/post/5ce15668f265da1bbf68ed52 1 前言 最近我在关注ViewPager2使用,期间一直基于官方Demo...由于Log太长,一屏根本截不完,反正就是很多个Fragment经历了onCreate->onDestory所有过程; 操作前,只有Fragment2创建并显示,理论上旋转屏幕之后,只有Fragment2...3 初步原因MATCH_PARENT计算失效 ViewPager2目前只支持ItemView布局参数是MATCH_PARENT,就是填充父布局效果;由于ViewPager2是基于RecyclerView...就失去了ItemView一屏显示一个特性,所以会出现开头说瞬间暴增多个Fragment现象; 由于ViewPager2配合Fragment使用时,根布局是FrameLayout这个无法改变,解决办法就是不允许出现跟滑动方向相同维度测量上...6 总结 注意ViewPager2配合Fragment使用时,一旦发现Fragment瞬间暴增情况,可能是Item尺寸测量不对,造成这个原因要优先想到UNSPECIFIED,·如果用LinearLayout

    7.6K30

    Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

    热门壁纸数据处理 八、ViewPager2显示数据 1. 布局使用ViewPager2 2. BaseQuickAdapter使用 3. PictureRepository 4....显示数据 九、源码 前言   在日常开发,最常用于展示数据形式就是列表,你会看到各种各样列表,比如图片列表、视频列表,联系人列表,而在RecyclerView出来之前列表开发是使用ListView...,这里我有删除、增加、查询所有数据方法。...首先在Constant增加两个常量,用于控制热门壁纸请求和使用方式。...八、ViewPager2显示数据   当点击某一个图片时候,将值传到详情页面去,然后在这个页面可以左右滑动去查看图片,这无疑是比看一个点一个要好一些,可以利用ViewPager2来解决。 1.

    2.7K10

    Android MVVM框架搭建(四)RecyclerVIew + ViewPager2 + BaseQuickAdapter

    热门壁纸数据处理 八、ViewPager2显示数据 1. 布局使用ViewPager2 2. BaseQuickAdapter使用 3. PictureRepository 4....显示数据 九、源码 前言   在日常开发,最常用于展示数据形式就是列表,你会看到各种各样列表,比如图片列表、视频列表,联系人列表,而在RecyclerView出来之前列表开发是使用ListView...,这里我有删除、增加、查询所有数据方法。...首先在Constant增加两个常量,用于控制热门壁纸请求和使用方式。...八、ViewPager2显示数据   当点击某一个图片时候,将值传到详情页面去,然后在这个页面可以左右滑动去查看图片,这无疑是比看一个点一个要好一些,可以利用ViewPager2来解决。 1.

    2.1K20

    Android原生TabLayout使用全解析,看这篇就够了

    在效果实现上,有同学会选择自定义View来做,定制性高,易用性、稳定性、维护性不敢保证,使用官方组件能避免这些不确定性,一是开源,有很多大佬共建,会不停迭代;二是经过大型app验证,比如google...play;有了这两点,基本可以放心大胆使用官方组件了。...关于小红点这里就不展开了,非常推荐查看我之前写这篇:【涨姿势】你没用过BadgeDrawable Author:yechaoa 11.获取隐藏Tab 上一节我们实现了小红点效果,那如果一屏显示不够情况下...同时在TabLayout滑动过程也应该加上判断显示逻辑: // mBinding.tabLayout7.setOnScrollChangeListener() // min api...viewpager2FragmentStateAdapter 代替。

    9.1K41

    ConstraintLayout+ViewPager2打造《摇一摇新年幸运签》App

    采用Kotlin语言进行编写,涉及到技术有:ConstraintLayout、Drawable、 自定义View、Android动画、Viewpager2、字体设置和传感器使用。...image.png ConstraintLayout使用 啰嗦两句,有的小伙伴可以没用过,可以参考下 在ConstraintLayout控件横竖两个方向都至少要选择一个进行约束,否则控件将在左上角进行摆放...使用这个字体,并传给父类。 在布局文件中使用,代码在ConstraintLayout章节。 class SpringTextView(context: Context?...在ViewPager2滑动监听onPageSelected方法调用如下方法即可 记得做如下判断 if (position <= llPointContainer.childCount) updateIndicator...,0.0为不显示,1.0为正常大小 toXScale 横向动画最终缩放倍数,1.0为正常大小,大于1.0放大 fromYScale 纵向动画开始前缩放,0.0为不显示,1.0为正常大小 toYScale

    70820

    ConstraintLayout+ViewPager2打造《摇一摇新年幸运签》App

    采用Kotlin语言进行编写,涉及到技术有:ConstraintLayout、Drawable、 自定义View、Android动画、Viewpager2、字体设置和传感器使用。...使用这个字体,并传给父类。 在布局文件中使用,代码在ConstraintLayout章节。 class SpringTextView(context: Context?...在ViewPager2滑动监听onPageSelected方法调用如下方法即可 记得做如下判断 if (position <= llPointContainer.childCount) updateIndicator...传感器 Android中有很多传感器,这里我们用到是加速度传感器,使用步骤如下: 获取传感器管理者对象 获取加速度传感器对象 注册传感器(onCreate调用) 解除传感器(onDestory调用...,0.0为不显示,1.0为正常大小 toXScale 横向动画最终缩放倍数,1.0为正常大小,大于1.0放大 fromYScale 纵向动画开始前缩放,0.0为不显示,1.0为正常大小 toYScale

    1.7K20

    怎样在Android上实现一个iOS多任务列表效果

    第一种比较简单,直接调viewPager.setPageMargin,给一个负值,卡片就会重叠在一起,重叠区域大小不会随着滚动而变化,显然不是我们想要;        第二种是使用PageTransformer...,滚动过程,ViewPager会回调transformPage(View page, float position),在这里面做想要变化就行,PageTransformer具体使用方法这里不细讲,...因为ViewPager可以先往后滑,再往前滑,这时候前面的item可能是刚创建出来,addView时候肯定就存在child数组最后面,事实上这个view是显示在屏幕最前面),而mDrawingOrderedChildren...更新:        偶然看到androidx包下多了个ViewPager2,吃惊,看一下代码,注释如下: 1.png        可以看到,ViewPager2已经支持了从右到左布局了,也支持竖向布局...,其源码实现是封装了RecyclerView,接口几乎和ViewPager一致,也解决了RecyclerView不能直接使用Fragment问题,腻害呀!

    3.7K60

    8.滑动事件处理

    使用自定义viewpager,重写它方法 /** * 重写onTouchEvent事件,什么都不用做,不能滑动 */ @Override public boolean onTouchEvent...(MotionEvent arg0) { return false; } viewpager2在1里面,2想滑动,可是1却是不能滑动,把2滑动事件拦截了,所以2也不能滑动了,这里还是重写1自定义viewpager...(MotionEvent arg0) { return false; } 接下来2使用自定义viewpager,在第一个页面的时候让父控件拦截,即显示出侧边栏,但是3的话是不拦截,让侧边栏不显示出来,...左划, 而且是最后一个页面, 需要父控件(viewpager2)拦截,会滑动2下一个页面 * 3....requestDisallowInterceptTouchEvent(false); } break; default: break; } return super.dispatchTouchEvent(ev); }}  MotionEventgetX

    1.1K120

    8.滑动事件处理

    使用自定义viewpager,重写它方法 /** * 重写onTouchEvent事件,什么都不用做,不能滑动 */ @Override public boolean onTouchEvent...(MotionEvent arg0) { return false; } viewpager2在1里面,2想滑动,可是1却是不能滑动,把2滑动事件拦截了,所以2也不能滑动了,这里还是重写1自定义viewpager...(MotionEvent arg0) { return false; } 接下来2使用自定义viewpager,在第一个页面的时候让父控件拦截,即显示出侧边栏,但是3的话是不拦截,让侧边栏不显示出来,...左划, 而且是最后一个页面, 需要父控件(viewpager2)拦截,会滑动2下一个页面 * 3....requestDisallowInterceptTouchEvent(false); } break; default: break; } return super.dispatchTouchEvent(ev); }} MotionEventgetX

    81220

    Android仿微信Viewpager-Fragment惰性加载(lazy-loading)

    前言 今天起床,拿起手机开机第一时间当然是打开微信了,左右滑动Viewpager,发现它使用了一种叫惰性加载,或者说懒加载(lazy-loading)方式加载ViewpagerFragment。...会执行,Fragment实例仍在!...2.FragmentStateAdapter 有点类似于LIstviewRecyclerBin机制,当Fragment不在viewPager.setOffscreenPageLimit(3);保护范围内...因为Fragment处于onResume状态并不代表它对用户是可见觉得很困惑?那我们一起来Log一下吧。 我们把生命周期回调方法加了Log语句。...那么ViewPager初始化时构建Fragment个数与什么有关呢?这个主要跟使用Adapter类型和setOffscreenPageLimit()有关。

    1.3K31
    领券