プロジェクト

全般

プロフィール

Androidプログラミング-フラグメント

フラグメントの目的・位置づけ

複数のUI(画面=Activity)で共通するUI断片、Viewと違って表示だけでなくライフサイクル管理ができます。
典型的な使い方は、表示領域の小さいスマートフォンでは別々の画面に分けていたものを、表示領域の大きなタブレットでは同じ画面に並べて表示する、その際表示制御のプログラムコードは共通にする、です。ついで、タブによる画面切り替えがあります。
Activityとの大きな違いは、他のアプリから呼ぶことができるのはActivityとなります。

標準フラグメント

標準で提供されるフラグメント

  • Fragment
    • BrowserFragment
    • DetailsFragment
    • DialogFragment
      フローティングダイアログを表示(代案:Activityのdialogヘルパーメソッド)
    • ErrorFragment
    • GuidedStepFragment
    • HeadersFragment
    • ListFragment
      アダプタに管理されるリストを表示。onListItemClickコールバックがある。
    • PreferenceFragment
      Preferenceオブジェクトの階層を表示。
    • RowsFragment
    • SearchFragment
    • VerticalGridFragment
    • WebViewFragment
    • PlaybackOverlayFragment

フラグメントのライフサイクルと呼び出される主要メソッド

フラグメントがアクティビティに追加された
  ↓
onAttach()
  ↓
onCreate()
  ↓
onCreateView() <-------+
  ↓                 |
onActivityCreated()    |
  ↓                 |
onStart()              |
  ↓                 |
onResume()             |
  ↓               |
onPause()              |
  ↓                 |
onStop()               | バックスタックに入ったフラグメントが戻った時
  ↓                 |
onDestroyView() -------+
  ↓
onDestroy()
  ↓
onDetach()
  ↓
フラグメントが破棄された

Fragment作成にあたって

デザインメモ

  • Fragmentクラスの直接または間接のサブタイプとして作成
  • コンストラクタを定義しない
    フラグメントの初期化は、フラグメントのライフサイクルの開始以降に引き延ばします。onCreateなど。
  • UIを持たない実装で、Activityのためのデータホルダーを務めることも(MVVMパターンにおけるViewModel的な存在?)

*


ほぼ9年前に更新