首頁 >Java >java教程 >如何從 Activity 存取和執行 ViewPager 片段中的方法?

如何從 Activity 存取和執行 ViewPager 片段中的方法?

Patricia Arquette
Patricia Arquette原創
2024-11-04 09:52:01368瀏覽

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