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