Aは、UIビジネスロジックを特定の(またはグループの)Fragmentものに結び付けたい場合に便利なアプローチだと思います。Viewご存知のように、その個人Fragmentには、同じように独自のライフサイクルコールバックなどがありますActivity。
Activity単一のホストを複数持つのではなく、単一ListViewのドライブの背後にあるロジックを処理するだけでよいPagerAdapterため、Fragmentこのアプローチを使用する方がクリーンな場合があります。FragmentListView
これは、私が今直面している状況と非常によく似ています。内にさまざまな垂直スクロールフォーム(多数の入力フィールドで構成される)を表示していViewPagerます。私の場合、特定のページにまったく異なる種類のビューを実際に表示する必要がある可能性があるため、このFragmentアプローチを採用しました。ViewPagerたとえば、最初の数ページに、ユーザー入力フォームが表示される場合があります。ただし、最終ページにはグラフが表示されます。そのグラフを駆動するには、まったく別のロジックセットが必要です。これらの入力フォームと1つのグラフを1つから駆動するActivityには、少し面倒になります。おそらく、いくつかのデリゲートクラスなどにビジネスロジックを含める必要があります。だから私にとって、Fragmentsは結局のところ明白な選択でした。私は私InputFormFragmentとGraphFragmentView、およびそれらはそれぞれ、それらが提供するsに適用可能なロジックのみを含みます。
View考慮すべきもう1つのことは、近い将来、あなたも別の種類のを表示したいと思うかもしれないということですViewPager。または、別のUIレイアウトをまとめて使用することもできます。おそらく、使用しないViewPagerがすべてを並べて表示するUIレイアウトです(たとえば、横向きモードの大型タブレットで使用されるレイアウト)。sを使用Fragmentすると、物事ははるかにモジュール化され、コードを因数分解してこれをより迅速に行うことができます。一方、s内ActivityのシンプルPagerAdapterですべてのロジックを含むシングルを使用して目的を達成した場合は、新しい種類のsまたは特別なタブレットレイアウトListViewをサポートするために、将来さらに作業が必要になる可能性があります。View
私が言うことの1つは、自分自身Fragmentにsを実装したことです。特別な要件がある場合は、少し厄介になる可能性があります。の管理には注意が必要な場合があります。たとえば、私のUIの場合、を含むをプログラムで追加および削除できる必要がありました。また、特定の時点ですべてのから同時にデータを収集する必要があるため、使用中のアダプターが表示された後、それらが破壊されないようにする必要がありました。さらに、sが適切に通過し、が削除されたときに削除されるように、拡張および変更する必要がありました。ViewPagerFragmentPagerAdapterFragmentStatePagerAdapterFragmentViewPagerFragmentFragmentFragmentFragmentPagerAdatperFragmentonDestroy()FragmentManagerViewPager
Fragment■さまざまな画面サイズと向きのUIを構築する非常にモジュール化された方法を可能にし、個々のUI要素のビジネスロジックとライフサイクルをカプセル化する方法に優れています。ListViewただし、シナリオが実際にaの数秒と同じくらい単純でViewPagerあり、モジュール性が必要ないことがわかっている場合は、Fragmentsのオーバーヘッドが過剰になる可能性があります。