ViewPager+Fragment多层嵌套导致越界的问题

报错信息如下:

E/AndroidRuntime: FATAL EXCEPTION: main
  Process: net.cloudelevator.cloudElevator, PID: 32446
  java.lang.IndexOutOfBoundsException: Index: 4, Size: 3
      at java.util.ArrayList.get(ArrayList.java:411)
      at com.androidkun.xtablayout.XTabLayout.getTabAt(XTabLayout.java:573)
      at net.cloudelevator.cloudElevator.fragment.FeaturesFragment$6.onPageSelected(FeaturesFragment.java:187)
      at androidx.viewpager2.widget.CompositeOnPageChangeCallback.onPageSelected(CompositeOnPageChangeCallback.java:73)
      at androidx.viewpager2.widget.CompositeOnPageChangeCallback.onPageSelected(CompositeOnPageChangeCallback.java:73)
      at androidx.viewpager2.widget.ScrollEventAdapter.dispatchSelected(ScrollEventAdapter.java:432)
      at androidx.viewpager2.widget.ScrollEventAdapter.onScrolled(ScrollEventAdapter.java:190)
      at androidx.recyclerview.widget.RecyclerView.dispatchOnScrolled(RecyclerView.java:5173)
      at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5338)
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
      at android.view.Choreographer.doCallbacks(Choreographer.java:686)
      at android.view.Choreographer.doFrame(Choreographer.java:618)
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
      at android.os.Handler.handleCallback(Handler.java:751)
      at android.os.Handler.dispatchMessage(Handler.java:95)
      at android.os.Looper.loop(Looper.java:154)
      at android.app.ActivityThread.main(ActivityThread.java:6198)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)

不知道为什么会出现这样的场景,嵌套后还都是fragment,最后到了我的手上,这里两个ViewPager还是不一样的一,外层是QMUI的QMUIViewPager,内层使用的是androidx中的ViewPager2
在滑动过程中直接闪退,查看错误信息发现是越界的问题,在对应的Adapter回调中打Log发现了问题的原因: 由于外层的QMUIViewPager没有设置页面缓存的数量默认缓存2个,在外层执行后,内层的被多次添加数据
解决方法:1:外层设置缓存页面数为对应数据的数量(页面不多的情况下)
2:添加数据前先清空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值