Android

Android - Fragmentに関するメモ

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パッケージ)を利用

手順

  1. FragmentManager#beginTransactionメソッドでトランザクションを開始
  2. フラグメントを操作
  3. commitメソッドで変更を確定

※ FragmentManagerクラスはフラグメントを管理・操作するためのクラスで、Activity#getFragmentManagerメソッドで取得

Fragmentに値を設定して渡す

Bundleオブジェクトを利用

-Android