Eyes, JAPAN Blog > AndroidのActivityとFragmentについて

AndroidのActivityとFragmentについて

Taro Aoki

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

こんにちは、アルバイトの青木です。

最近Androidの記事ばっかり書いているような気がしますが、個人的に作っているアプリの進捗はあんまりありません…。(´-`).。oO( まとまった時間が欲しい )

それはさておき、今回はAndroidの画面を構成するActivityとFragmentの違いについて解説したいと思います。

どちらも画面を構成するためのコンポーネントですが、明確な違いがあります。

Fragmentは直訳で「断片」を意味しているように、ある一部分に使用するために存在します。Androidの動作する端末はメーカーによって様々です。そのため、画面サイズがまちまちです。さらにタブレットの登場によりさらに開発者の負担が大きくなりました。

そこでAndroid3.0(HoneyComb)でFragmentが登場しました。

今までは画面につき1つのActivityだったのに対し、Fragmentを使うと、柔軟に画面の設計をすることができるようになります。

frag01

http://cdn.dev.classmethod.jp/wp-content/uploads/2012/12/frag01.png

上の画像はFragmentの使用例です。このように端末の画面サイズに基づいてレイアウトを変更したりすることができます。

7486bad0a9d82287f4c9ff20f32cfd93

こちらは拙作ですが、開発中のアプリです。

挙動を見るだけだと分かりにくいかもしれませんが、ここでは、

  • 画面のページングにおけるページ
  • ランキングのタブの各部分
  • 曲をタップした時のダイアログ

にFragmentが使われています。

なので、このアプリでは1つのActivityの上にFragmentがいくつも乗っているような設計となっています。

特にページングはFragmentでないと実装できないので非常に重要です。

ページングの処理は以下のようにスライドした時に表示されるページのインデックスが渡されるgetItem()メソッドをオーバーライドし、それに応じて表示したいFragmentのインスタンスを返すことで表示を行っています。

スクリーンショット 2016-05-27 19.01.47

FragmentはActivityと違い、それぞれが独立したモジュールのようなものなので、変更に強いです。また、再利用も容易です。

 

このようにActivityとFragmentは同じ画面を構成するためのコンポーネントではありますが、明確に違いがあることが理解いただければ幸いです。

 

Comments are closed.