首页 > 解决方案 > ViewPager 中的片段在 isVisible 不是时显示为 true

问题描述

当我的活动显示包含 ViewPager 的片段时,我试图覆盖后退按钮。基本上,如果在屏幕上 viewPager 片段时选择了后退按钮,我想在 viewPager 片段中调用这个函数:

fun onBackPressed() {
    if (viewPager.currentItem > 0) {
        previousPage()
    } else {
        activity?.onBackPressed()
    }
}

目前,在我的活动中,我覆盖onBackPressed

override fun onBackPressed() {
    val fragments = supportFragmentManager.fragments
    for (fragment in fragments) {
        if (fragment.isVisible && fragment is IRegistrationBackPressed) {
            fragment.registrationBackPressed()
            return
        }
    }
    super.onBackPressed()
}

我的 viewPager 的第一页没有实现 IRegistrationBackPressed,因此如果您在第一页,它应该只调用super.onBackPressed. viewPager 中的任何其他页面都实现了 IRegistrationBackPressed,它只调用了onBackPressed我上面显示的 viewPager 片段的函数。

我必须这样做,因为无论出于何种原因,viewPager 片段都不会出现在活动片段中......但是我的问题是,当我在第一页上时,第二页不仅在片段堆栈中,但它的isVisible布尔值是真的。

对我来说,这零意义......如果片段不在视图中,为什么它的可见性布尔值显示为真?

标签: androidandroid-fragmentsandroid-viewpager

解决方案


推荐阅读