ViewPager2 - 如何使用registerOnPageChangeCallback检查视图页面项目位置

9

我该如何使用ViewPager2的registerOnPageChangeCallback功能来检查当前可见的ViewPager2片段的位置? 我知道这将包含一个if/when语句,但不知道正确的实现方法。

mViewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                if (mViewPager.currentPage) == 0 {
                // do something
                }
                else if (mViewPager.currentPage) == 1 {
                // do something
                }
                else {
                // do something
                }
                super.onPageSelected(position)
            }
        })
2个回答

25

使用传递的position来确定你所在的位置:

 mViewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                if (position == 0) {
                // you are on the first page
                }
                else if (position == 1) {
                // you are on the second page
                }
                else if (position == 2){
                // you are on the third page
                }
                super.onPageSelected(position)
            }
        })

5

onDestroy方法中注销回调函数,以避免可能的内存泄漏。

override fun onDestroy() {
    super.onDestroy()
    mViewPager.unregisterOnPageChangeCallback(this)
}

可以只更新已接受的答案,同时必须将回调传递给ViewPager2.unregisteronpagechangecallback - lasec0203
2
为什么?在 onDestroy 之后持有 ViewPager2 的 Activity 都会被垃圾回收 --> ViewPager 也会被垃圾回收 --> 回调函数也会被垃圾回收。 - Sơn Phan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接