開発
AndroidのActivityとFragmentについて
Taro Aoki
こんにちは、アルバイトの青木です。
最近Androidの記事ばっかり書いているような気がしますが、個人的に作っているアプリの進捗はあんまりありません…。(´-`).。oO( まとまった時間が欲しい )
それはさておき、今回はAndroidの画面を構成するActivityとFragmentの違いについて解説したいと思います。
どちらも画面を構成するためのコンポーネントですが、明確な違いがあります。
Fragmentは直訳で「断片」を意味しているように、ある一部分に使用するために存在します。Androidの動作する端末はメーカーによって様々です。そのため、画面サイズがまちまちです。さらにタブレットの登場によりさらに開発者の負担が大きくなりました。
そこでAndroid3.0(HoneyComb)でFragmentが登場しました。
今までは画面につき1つのActivityだったのに対し、Fragmentを使うと、柔軟に画面の設計をすることができるようになります。
http://cdn.dev.classmethod.jp/wp-content/uploads/2012/12/frag01.png
上の画像はFragmentの使用例です。このように端末の画面サイズに基づいてレイアウトを変更したりすることができます。
こちらは拙作ですが、開発中のアプリです。
挙動を見るだけだと分かりにくいかもしれませんが、ここでは、
- 画面のページングにおけるページ
- ランキングのタブの各部分
- 曲をタップした時のダイアログ
にFragmentが使われています。
なので、このアプリでは1つのActivityの上にFragmentがいくつも乗っているような設計となっています。
特にページングはFragmentでないと実装できないので非常に重要です。
ページングの処理は以下のようにスライドした時に表示されるページのインデックスが渡されるgetItem()メソッドをオーバーライドし、それに応じて表示したいFragmentのインスタンスを返すことで表示を行っています。
FragmentはActivityと違い、それぞれが独立したモジュールのようなものなので、変更に強いです。また、再利用も容易です。
このようにActivityとFragmentは同じ画面を構成するためのコンポーネントではありますが、明確に違いがあることが理解いただければ幸いです。