YoKeyword / Fragmentation

[DEPRECATED] A powerful library that manage Fragment for Android
Apache License 2.0
9.72k stars 2.11k forks source link

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

Open gzpaiwxc opened 4 years ago

gzpaiwxc commented 4 years ago

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

JantHsueh commented 4 years ago

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

gzpaiwxc commented 4 years ago

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

JantHsueh commented 4 years ago

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

Onionsss commented 4 years ago

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

wayneleo commented 4 years ago

用kotlin写,发现同样的问题

zhuzhutai commented 3 years ago

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