YoKeyword / Fragmentation

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

使用viewpager +initLazyView 还是会预加载,而且切换时不执行onHiddenChanged #1141

Closed quanquan521 closed 5 years ago

quanquan521 commented 5 years ago

Issues Guideline

Following information can help us to resolve the issue faster.

In addition, we do not accept issues unrelated to Fragmentation.

cocowobo commented 5 years ago

你这提的是什么bug???

quanquan521 commented 5 years ago

是我使用的姿势不对吗 for (i in mTabs.indices) { .. fragment 个数不确定 tabs.addTab(tabs.newTab().setText(mTabs[i])) val f=CouponFragment() val bundle = Bundle() val use_status = i bundle.putInt("use_status", use_status+1) f.setArguments(bundle) fragments.add(f) } viewpager.adapter = FragmentAdapter(supportFragmentManager, fragments) viewpager.currentItem = 0//要设置到viewpager.setAdapter后才起作用 tabs.setupWithViewPager(viewpager) tabs.verticalScrollbarPosition = 0

cocowobo commented 5 years ago

viewpager的子页面的懒加载是由适配器和设置决定的,切换不执行 onHiddenChanged ,是每次都不执行还是第一次不执行。你用的还不是java我是不会了。

hljwang3874149 commented 5 years ago

viewpager 中的fragment 点击回调 setUserVisibleHint 方法 而不是 onHiddenChanged

gzpaiwxc commented 4 years ago

@quanquan521 请问大佬有解决掉 viewpager 预加载的问题吗 ? 我的是有 4 个 fragment , viewpager 设置 setOffscreenPageLimit=3 , viewpager 会把 4 个fragment 都预加载了 , onLazyInitView 也是预加载的时候每个 fragment 都调用了 , 这不是想要的效果 , 想要的懒加载效果是 fragment 可见才去加载 懒加载的方法 , 翻遍所有有关懒加载的 issues 都没能解决问题 . 你说的切换不执行 onHiddenChanged 是因为这个库内部做了处理 , onSupportVisible 和 onSupportInVisible 应该就相当于是 onHiddenChanged 了