ジレンマ: フラグメントとアクティビティをいつ使用するか: 質問する

ジレンマ: フラグメントとアクティビティをいつ使用するか: 質問する

Activitiesはアプリケーションの単一の画面を表すように設計されているのに対し、 はFragments内部にロジックが埋め込まれた再利用可能な UI レイアウトとして設計されていることがわかります。

つい最近まで、私はアプリケーションを開発すべきだと言われる通りに開発していました。Activityアプリケーションの画面を表すために を作成し、 または に Fragments を使用していました。ViewPagerや、何度も再利用できる他の UIGoogle Mapsを作成することはほとんどありませんでした。ListFragment

Activities最近、と の 2 つSettingsActivityだけを含むプロジェクトに遭遇しましたMainActivity。 のレイアウトにはMainActivity、多くの非表示のフルスクリーン UI フラグメントが設定されており、表示されるのは 1 つだけです。 のロジックでは、アプリケーションのさまざまな画面の間に がActivity多数存在します。FragmentTransitions

このアプローチの良いところは、アプリケーションが を使用するためActionBar、切り替え時に発生する画面切り替えアニメーションに合わせて移動せず、そのまま残ることですActivity。これにより、画面遷移がよりスムーズになります。

私が尋ねているのは、このトピックに関する現在の開発方法を共有していただくことです。一見すると意見に基づく質問のように見えるかもしれませんが、私はそれを Android の設計とアーキテクチャに関する質問と見ています...実際には意見に基づく質問ではありません。

更新 (2014 年 1 月 5 日): SquareEric Burkeによるこのプレゼンテーションに続いて(Android 開発者にとって役立つツールが多数紹介された素晴らしいプレゼンテーションだと言わざるを得ません。私は Square とは一切関係ありません)

http://www.infoq.com/presentations/Android-デザイン/

過去数か月間の私の個人的な経験から、アプリケーションを構築する最良の方法は、アプリケーション内のフローActivityを表すフラグメントのグループを作成し、それらのフラグメントすべてを 1 つの に表示することだということが分かりました。つまり、基本的に、アプリケーション内の の数はフローの数と同じになりますActivities。そのようにすると、アクション バーはすべてのフローの画面でそのまま残りますが、フローを変更すると再作成されるので、非常に理にかなっています。Eric Burke が述べ、私も理解しているように、Activitiesできるだけ少ない数を使用するという哲学は、彼が「神」アクティビティと呼ぶものに混乱を引き起こすため、すべての状況に当てはまるわけではありません。

ベストアンサー1

専門家はこう言います。「UI を見ると、Activityと のどちらを使うべきかがわかりますFragment」。最初は意味がわかりませんが、時間が経つにつれて、実際に必要かFragmentどうかがわかるようになります。

私にとって非常に役立つ良い習慣があります。それは、娘に何かを説明しようとしているときに思いついたのです。

つまり、画面を表すボックスを想像してください。このボックスに別の画面を読み込むことはできますか? 新しいボックスを使用する場合、最初のボックスから複数の項目をコピーする必要がありますか? 答えが「はい」の場合、 を使用する必要があります。FragmentsルートにはActivity重複したすべての要素を保持できるため、作成にかかる時間を節約でき、ボックスの一部を簡単に置き換えることができます。

ただし、常にボックス コンテナー ( ) が必要であることを忘れないでくださいActivity。そうしないと、パーツが分散されてしまいます。つまり、パーツが入った 1 つのボックスです。

ボックスを誤用しないように注意してください。Android UX の専門家は、別の を明示的にロードする必要がある場合はActivity、代わりに を使用するようにアドバイスしています (YouTube で見つけることがFragmentできます) (カテゴリのあるナビゲーション ドロワーを扱うときなど)。 に慣れたらFragments、彼らのビデオをすべて視聴できます。さらに、それらは必須の資料です。

今すぐ UI を見て、 または が必要かどうかを判断できますかActivity?Fragment新しい視点が得られましたか? そうだと思います。

おすすめ記事