Fragmentはその名のとおり「断片」みたいな機能で、Activityの中に組み込めるブロックみたいなものです。Fragmentを使うことで、Activityの共通部分を切り出して使い回しできたり、肥大化しやすいActivityを細かく分割して独立したコンポーネントとして扱えるようになります。
Fragmentとは?
- 英語で直訳すると「断片」の意味で、Activityの中に組み込めるブロックのようなもの
- Android 3.0(HoneyComb)で新しく追加された
- Fragmentが登場する前は、Activityで画面を構成し、画面を切り替えるには新たにActivityを生成するか、追加・削除の繰り返しをして独自に切り替えていた
- FragmentはActivity上に乗っかっていて、切り替え管理がしやすい
- 複雑になりがちな画面を細かく分割し、それぞれを独立したコンポーネントとして扱い、再利用できるようになる
Framgmentの使い方
FragmentはFragmentクラスを継承したクラスを作成し、FragmentManagerを用いて画面に配置する
作成したFragmentを使う方法は2つ
- レイアウトに直接記述
- 「静的なFragment配置」と呼ぶ
- 画面の一部をコンポーネント化して複数のAcvitiyでFragmentを再利用できる
- プログラム内でFragmentを配置
- 「動的なFragment配置」と呼ぶ
- プログラム内で配置する場合は、FragmentManagerを使う
- FragmentManagerはActivityのメンバなので、Activityからインスタンスを取得できる
- 取得したFragmentManagerからFragmentTransactionを取得し、それを用いてFragmentの追加や置換えを行う
Fragmentのライフサイクル
- Fragmentの追加
- created
- onAttach: アクティビティと関連付いたとき
- onCreate: フラグメントの作成が開始
- onCreateView: フラグメントに関連付いたView階層を生成
- onActivityCreated: アクティビティが生成された(onCreate)
- Started
- onStart: フラグメントが表示される直前
- Resumed
- onResume: フラグメントが利用可能な状態に
- 実行中
- フラグメントが置換/削除(バックスタックに移動)
- Paused
- onPause: フラグメントが一時停止になるとき
- Stopped
- onStop: フラグメントが一時停止になるとき
- Destoryed
- onDestroyView: フラグメントに関連づいたView階層が削除されたとき
- バックスタックから復帰する場合、onCreateViewへ
- onDestroy: フラグメントが使用されなくなったとき
- onDetach: アクティビティとの関連付けが削除されたとき
- Fragmentの破棄
Fragment(Activity)から別のFragmentを起動する
Fragment(Activity)から別のFragmentを起動するには、FragmentTransactionクラス(Android.appパッケージ)を利用
手順
- FragmentManager#beginTransactionメソッドでトランザクションを開始
- フラグメントを操作
- commitメソッドで変更を確定
※ FragmentManagerクラスはフラグメントを管理・操作するためのクラスで、Activity#getFragmentManagerメソッドで取得
Fragmentに値を設定して渡す
Bundleオブジェクトを利用