Fragment
は有用なアプローチであるあなたは、特定のView
(またはグループの)に、いくつかのUIのビジネスロジックを結ぶたいとき、私は、と思います。ご存知のように、その個人Fragment
には、Activity
と同じように、独自のライフサイクルコールバックなどがあります。
よりもむしろ単一PagerAdapter
を介して単一Activity
ホスト多くListView
Sを有し、Fragment
が単一ListView
駆動背後にあるロジックに対処する必要があるため、Fragment
アプローチを使用するクリーナであってもよいです。
これは私が直面しているものと非常によく似た状況です。私はViewPager
の中にさまざまな垂直スクロールフォーム(多くの入力フィールドで構成されています)を表示しています。私の場合、Fragment
のアプローチになっています。私の場合、ViewPager
は、実際には、特定のページで完全に異なる種類のビューを表示する必要がある可能性があるからです。たとえば、最初の数ページでは、ユーザーの入力フォームが表示されることがあります。しかし最後のページにグラフが表示されます。そのグラフを駆動するには、別個の論理セットが必要です。これらの入力フォームと1つのグラフを1つのActivity
から駆動するにはちょっと混乱します。私はおそらくビジネスロジックをいくつかのデリゲートクラスなどに入れる必要があります。だから、私にとってはFragment
が最終的にはっきりとした選択だった。私はInputFormFragment
とGraphFragment
を持っていて、彼らはそれぞれが提供するView
のための適用可能なロジックだけを含んでいます。
近い将来、ViewPager
に別の種類のView
を表示することもできます。または、別のUIレイアウト、つまりViewPager
を使用せず、すべてを横に並べて表示するレイアウト(たとえば、大型タブレットで横向きモードで使用されるレイアウト)を使用することもできます。 Fragment
では、物事ははるかにモジュール化されており、これを素早く行うようにコードを因数分解することができます。一方、単純なPagerAdapter
とその中のListView
のすべてのロジックを含む単一のActivity
を使用して目標を達成した場合、新しい種類のView
または特殊なタブレットレイアウトをサポートするために今後さらに多くの作業が必要になることがあります。私は言うだろう
一つは、物事はあなたが特別な要件がある場合は少し厄介な取得することができますFragmentPagerAdapter
とFragmentStatePagerAdapter
を通じてViewPager
に自分自身をFragment
秒を実現しましたさ。 Fragment
を管理することは時々トリッキーになる可能性があります。たとえば、私のUIの場合、Fragment
を含むViewPager
をプログラムで追加して削除する必要がありました。私はまた、使用しているアダプタが、Fragment
を一度表示すると破棄しないようにする必要がありました。なぜなら、特定の時点ですべてFragment
のデータを同時に収集する必要があったからです。さらに、Fragment
がonDestroy()
を正しく通過するように、FragmentPagerAdatper
を拡張して変更しなければならず、ViewPager
が削除されたときにFragmentManager
から削除されました。
Fragment
は、様々な画面サイズと向きのUIを構築する非常にモジュラーな方法を可能にし、個々のUI要素のビジネスロジックとライフサイクルをカプセル化する方法が優れています。しかし、あなたのシナリオが実際にはViewPager
の複数のListView
と同じくらい単純で、モジュール性が決して必要ないことがわかっている場合、Fragment
のオーバーヘッドは過度なものになる可能性があります。
フラグメントから情報を収集することについては、インタフェースを作成する方が簡単ではないでしょうし、フラグメントホストがそれを実装するオブジェクトへの参照を持ち、インタフェース関数を使用してそのオブジェクトに情報を格納しますか? –
私が正しいと理解しているのは、ViewPager内にすべてのフラグメントが残っていることを確実にするために巧妙なことをする必要がなく(いつでも殺されずに再び作成されるわけではない)、代わりに、彼らの状態を維持する。私はこれを行うことができたと私は良いアプローチになるだろうが、私の特定のアプリケーションの断片は非常に建設するために高価であることに同意するだろう。コーディングとパフォーマンスの両方の理由から、すべてのフラグメントが保持されていることを確認し、すべてのデータを一緒に提出するよう要求するのはより簡単でした。 – Trevor