FragmentPagerAdapter と FragmentStatePagerAdapter の違いは何ですか? 質問する

FragmentPagerAdapter と FragmentStatePagerAdapter の違いは何ですか? 質問する

FragmentPagerAdapterとの違いは何ですかFragmentStatePagerAdapter?

FragmentPagerAdapterGoogle のガイドには次のように書かれています:

このバージョンのページャーは、タブのセットなど、ページングするフラグメントが通常より静的である場合に最適です。ユーザーがアクセスする各ページのフラグメントはメモリ内に保持されますが、そのビュー階層は表示されていない場合に破棄される可能性があります。フラグメント インスタンスは任意の量の状態を保持できるため、大量のメモリが使用される可能性があります。ページ セットが大きい場合は、 を検討してくださいFragmentStatePagerAdapter

そしてについてFragmentStatePagerAdapter

このバージョンのページャーは、ページ数が多い場合に、リスト ビューのように動作してより便利です。ページがユーザーに表示されない場合は、そのフラグメント全体が破棄され、そのフラグメントの保存された状態のみが保持されます。これにより、ページ間の切り替え時にオーバーヘッドが増加する可能性をFragmentPagerAdapter犠牲にすることに比べて、ページャーは、アクセスした各ページに関連付けられたメモリをはるかに少なく保持できます。

つまり、フラグメントは 3 つだけです。ただし、それらはすべて、大量のデータを含む個別のモジュールです。

Fragment1は、(ユーザーが入力する)データを処理し、アクティビティを介して に渡しますFragment2。 は単純な ですListFragmentFragment3も ですListFragment

私の質問は次のとおりです: どのアダプターを使用すればよいですか?FragmentPagerAdapterまたはFragmentStatePagerAdapter?

ベストアンサー1

ドキュメントにもあるように、このように考えてください。ブックリーダーのようなアプリケーションを作成する場合、すべてのフラグメントを一度にメモリにロードすることは望ましくありませんFragments。ユーザーが読んでいるときにロードして破棄する必要があります。この場合は を使用しますFragmentStatePagerAdapter。 大量の重いデータ ( などBitmaps) を含まない 3 つの「タブ」を表示するだけの場合は、が適している可能性があります。また、デフォルトでは が 3 つのフラグメントをメモリにロードするFragmentPagerAdapterことにも注意してください。最初に述べたように、階層を破棄して必要に応じて再ロードする可能性があります。2 番目はの状態のみを保存して完全に破棄します。その後、ユーザーがそのページに戻ると、状態が取得されます。ViewPagerAdapterViewAdapterFragment

おすすめ記事