KingJA/LoadSir

ViewPager2+Fragment 划走再回来 showCallback 空白

JohnsonJLi opened this issue · 10 comments

ViewPager2+Fragment 划走再回来 showCallback 空白

image
滑动到 别处 再回来 就变成 空白了
image

@JohnsonJLi 你好,请参考demo里的viewpager的用法使用viewpager尝试下,如果没问题可能是viewpager2的适配问题,到时请继续留言

我看了demo 和我写的一样 ,换成 ViewPager 肯定没问题, 这个问题应该是 ViewPager2的问题.

感觉是 ViewPager2 Recycler 的问题

image

    if (fragment.getView() != null) {
        ViewParent viewParent = fragment.getView().getParent();
        if (viewParent != null) {
            ((FrameLayout) viewParent).removeAllViews();
        }
    }

这是 androidx.viewpager2.adapter.FragmentStateAdapter 中的代码
大佬有时间的话可以看一下

@JohnsonJLi 你好,不清楚你代码的上下文,不好判断,我做了个关于ViewPager2的Demo,你可以参考下:https://github.com/KingJA/LoadSir/blob/v1.3.9-pre/app/src/main/java/sample/kingja/loadsir/target/MultiFragmentWithViewPager2Activity.java

@KingJA 我也是这样实现的 在每一个 fragment 中 设置LoadSir , 但是在滑动的过程中 FragmentStateAdapter 会把 LoadLayout removeAllViews

FragmentStateAdapter #433

导致再回到这个页面时 LoadSir 除了 SuccessCallback 之外的 其他 Callback 为空
不好意思 是我没说清楚

@JohnsonJLi 你可以下载并运行v1.3.9-pre,没有出现你说的问题

找到问题了,
我使用的是 register(view, )的方式 为了兼容 fragment 带标题的情况
没有使用 你 BaseFragment 哪种方式
如果 注册的view 为Fragment 根布局的话 会出现空白

我的锅 麻烦大佬了

image

加了个 判断, 以前没仔细看源码 大佬写的 666