Fragmentation icon indicating copy to clipboard operation
Fragmentation copied to clipboard

viewpager 预加载会把所有 fragment 里的 onLazyInitView 都调用

Open gzpaiwxc opened this issue 5 years ago • 6 comments

  • Library version fragmentationX 1.0.1

  • Logs onLazyInitView onSupportInVisible onSupportVisibleInVisible

  • Screenshots

我用的 Fragment 嵌套 Viewpager , 里面放 4 个 Fragment , setOffscreenPageLimit() 设为 3 , 每次进来都会把 4 个 fragment 预加载了 , 每个页面的 onLazyInitView 都在预加载的时候就调用了 , 这样岂不是都没有懒加载的效果了 ? onLazyInitView 懒加载不是在 fragment 可见的时候才调用的吗 ? 还有就是 onSupportVisible() 也是一样在预加载的时候 4 个 fragment 页面调用了 , 然后第一次切换页面时 , 只会调用上一个显示的 fragment 的 onSupportInVisible 方法 , 不调用要显示的 fragment 的 onSupportVisible 方法 , 第二次切换页面的时候才会调用 要显示的 fragment 的 onSupportVisible 和上一个显示的 fragment 的 onSupportInVisible . 困扰好久 , 请求路过的大神帮帮忙

gzpaiwxc avatar Jan 14 '20 09:01 gzpaiwxc

你好,我查看代码并通过demo验证了,并没有这个问题,你是否方便提供简单的demo,复现一下这个问题,我会尽快帮你处理

JantHsueh avatar Feb 16 '20 12:02 JantHsueh

@JantHsueh 我目前也找不到什么原因 , 项目用了 MVVM 的架构 , 我测了作者的 demo 是没问题的 , 我的项目是用 kotlin 写的 , 后面把有问题的代码写回 Java 又没问题了 , 我以为是框架和 kotlin 不兼容 , 后来我把作者的 demo 也用 kotlin 写测了一遍 , 还是没问题 。 最关键的一点是我的项目最大层有 3 个 tab , 首页的 tab 里面 viewpager+fragment 完全没问题 , 但是第 2 个 tab , viewpager+fragment 和首页的 tab 里的 viewpager+fragment 的写法完全一样 , 但用 kotlin 写就是有问题 , Java 写就是没问题,我真的非常懵逼 。用的是 demo 里知乎的那种写法。

gzpaiwxc avatar Feb 20 '20 03:02 gzpaiwxc

@gzpaiwxc 你方便提供一个该问题的demo吗,我看下是什么问题

JantHsueh avatar Feb 22 '20 05:02 JantHsueh

我也是这个问题 只不过是viewpager2

Onionsss avatar Sep 10 '20 08:09 Onionsss

用kotlin写,发现同样的问题

wayneleo avatar Sep 18 '20 08:09 wayneleo

androidx.fragment:fragment-ktx:1.2.5 去掉这个就行了

zhuzhutai avatar Aug 20 '21 10:08 zhuzhutai