ホームページ > Java > &#&チュートリアル > アクティビティから ViewPager フラグメントのメソッドにアクセスして実行する方法

アクティビティから ViewPager フラグメントのメソッドにアクセスして実行する方法

Patricia Arquette
リリース: 2024-11-04 09:52:01
オリジナル
304 人が閲覧しました

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

アクティビティから ViewPager Fragment メソッドにアクセス

このシナリオでは、6 つのフラグメントを持つ ViewPager がアクティビティ内に実装されます。フラグメント間のスワイプは無効になっているため、ボタンを使用して現在のフラグメントを変更します。 GET リクエストがサーバーに送信され、スワイプが完了すると応答データが各フラグメントに表示されます。

最初のアプローチ (setUserVisibleHint を使用)

最初に、 setUserVisibleHint メソッドを使用して、フラグメントが表示されるたびに GET リクエストをトリガーしました。ただし、このアプローチでは、リクエストが即時に実行されるため、スワイプ アニメーションに遅れが生じました。

2 番目のアプローチ (OnPageChangeListener を使用)

アニメーション ラグを克服するには、OnPageChangeListener が ViewPager に追加されました。このリスナーは、ページのスクロール状態を追跡し、目的のフラグメントが完全に表示されたとき (つまり、スクロール状態が IDLE に等しいとき) に GET リクエストを送信します。

問題と解決策

2 番目の方法はうまくいきましたが、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 を指します。

以上がアクティビティから ViewPager フラグメントのメソッドにアクセスして実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート