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的な存在?)
*