angcyo / DslTabLayout

:hearts: Android界最万能的TabLayout(不仅仅是TabLayout), 支持任意类型的item, 支持Drawable类型的指示器,智能开启滚动,支持横竖向布局等
https://github.com/angcyo/DslAdapter
MIT License
1.57k stars 148 forks source link

如何实现首页tab场景 #41

Closed scsfwgy closed 3 years ago

scsfwgy commented 3 years ago

要求:1. 只有打开对应tab的时候才加载fragment 2.加载后不回收。
不太喜欢官方提供的;Tab+ViewPager要么会回收,要么会预加载,要么一次全部加载。

scsfwgy commented 3 years ago

另外一种需求,比如跳转到 我的 tab,跳转前我希望可以进行拦截,比如登录后允许,未登录不允许。现在是只能监听选中了某个tab,无法拦截。

angcyo commented 3 years ago

已更新了demo代码,实现了你的要求

com.angcyo.dsltablayout.demo.sample.SampleActivity

scsfwgy commented 3 years ago

我这边用的判定fragment可见不可见的逻辑是基于老的setUserVisibleHint方法的,上面给的例子第二次在进入各种生命周期都不会走。不知道是不是setMaxLifecycle的问题。参考:https://github.com/angcyo/DslTabLayout/blob/cc647b6225047e85ee1f0b0c045ed91c935896f4/Sample/src/main/java/com/angcyo/dsltablayout/demo/BaseDslFragment.kt#L69

scsfwgy commented 3 years ago

image 最后一个条件判定为false,导致最近可见性错误。

angcyo commented 3 years ago

尽量使用最新的技术setMaxLifecycle

scsfwgy commented 3 years ago

老项目,牵一发动全身😂...

angcyo commented 3 years ago

那问题出在懒加载方案上了?

scsfwgy commented 3 years ago

就是判定可见时做一些操作,上述那个可见条件最后一个值不对。我现在重写了那个方法,把最后一个参数干掉了。但是很奇怪,不知道具体原因。之前没用setMaxLifecycle是好好的。

angcyo commented 3 years ago

Good Lucy