首页 >Java >java教程 >如何从 Activity 访问和执行 ViewPager 片段中的方法?

如何从 Activity 访问和执行 ViewPager 片段中的方法?

Patricia Arquette
Patricia Arquette原创
2024-11-04 09:52:01320浏览

How to Access and Execute Methods in ViewPager Fragments from an Activity?

从 Activity 访问 ViewPager Fragment 方法

在此场景中,在 Activity 中实现了具有六个片段的 ViewPager。片段之间的滑动被禁用,因此可以使用按钮来更改当前片段。滑动完成后,向服务器发送 GET 请求,并在每个片段中显示响应数据。

第一种方法(使用 setUserVisibleHint)

最初, setUserVisibleHint 方法用于在片段变得可见时触发 GET 请求。然而,由于立即执行请求,这种方法导致了滑动动画的滞后。

第二种方法(使用 OnPageChangeListener)

克服动画滞后,一个 OnPageChangeListener 被添加到 ViewPager 中。此侦听器跟踪页面滚动状态,并在所需片段完全可见时(即滚动状态等于 IDLE)发送 GET 请求。

问题和解决方案

The第二种方法效果很好,但是在执行sendGetRequest()时出现NullPointerException。这是因为没有正确获取片段引用。为了解决这个问题,有必要在 FragmentPagerAdapter 的 instantiateItem 方法中存储对片段的引用。然后,在 OnPageChangeListener 中,可以使用 ViewPagerPagerAdapter 引用的片段,而不是创建新片段。

更新了 ViewPager2 (Kotlin) 的代码

<code class="kotlin">viewPager.registerOnPageChangeCallback(
            object: ViewPager2.OnPageChangeCallback() {
                override fun onPageSelected(position: Int) {
                    super.onPageSelected(position)
                    val frag: Fragment = mAdapter.fragments[position]
                    if (frag != null && frag is FragmentTwo) {
                        (frag as FragmentTwo).sendGetRequest()
                    }
                }
            }
    )</code>

这里的mAdapter指的是ViewPager2内部使用的FragmentPagerAdapter。

以上是如何从 Activity 访问和执行 ViewPager 片段中的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn