フラグメントとフラグメントのライフサイクル
フラグメントとフラグメントのライフサイクル
断片
フラグメントは、再利用可能なアプリケーション インターフェイスのフラグメントです。アクティビティと同様に、フラグメントにはライフサイクルがあり、ユーザー入力に応答できます。フラグメントが画面に表示されると、フラグメントは常にアクティビティのビュー階層に含まれます。フラグメントは再利用性とモジュール性に重点を置いているため、複数のフラグメントを 1 つのアクティビティで同時にホストすることもできます。各フラグメントは、独自の個別のライフサイクルを管理します。
フラグメントのライフサイクル
アクティビティと同様に、フラグメントは初期化してメモリから削除できます。また、フラグメントが存在する間、画面上に表示され、消え、再表示されることもあります。さらに、アクティビティと同様に、フラグメントにも複数の状態を持つライフサイクルがあり、それらの間の遷移に応答するためのいくつかの代替方法を提供します。フラグメントのライフサイクルには 5 つの状態があり、Lifecycle.State 列挙で表されます。
- INITIALIZED: フラグメントの新しいインスタンスがインスタンス化されました。
- CREATED: システムはフラグメント ライフ サイクル メソッドの最初のバッチを呼び出しました。フラグメントがこの状態にある間、それに関連するビューも作成されます。
- 開始済み: フラグメントは画面上に表示されますが、フォーカスがないため、ユーザー入力に応答できません。
- 再開: フラグメントが表示され、フォーカスがあります。
- DESTROYED: フラグメント オブジェクトはインスタンス化解除されました。
さらに、アクティビティと同様に、Fragment クラスもライフサイクル イベントに応答するためのさまざまな代替メソッドを提供します。
onCreate()
:fragment はインスタンス化されており、CREATED 状態になっています。ただし、対応するビューはまだ作成されていません。onCreateView()
: このメソッドは、レイアウトをインフレートするために使用できます。フラグメントは CREATED 状態になりました。onViewCreated()
: このメソッドはビューの作成後に呼び出されます。このメソッドでは通常、findViewById() を呼び出して特定のビューをプロパティにバインドします。onStart()
: フラグメントは STARTED 状態になりました。onResume()
: フラグメントは RESUMED 状態に入り、フォーカスが置かれています (ユーザー入力に応答できます)。onPause()
: フラグメントは再び STARTED 状態になりました。対応するインターフェイスがユーザーに表示されます。onStop()
:fragment は CREATED 状態に戻りました。オブジェクトはインスタンス化されますが、画面には表示されなくなります。onDestroyView()
: このメソッドは、フラグメントが DESTROYED 状態になる前に呼び出されます。ビューはメモリから削除されましたが、フラグメント オブジェクトはまだ存在します。onDestroy()
:fragment は DESTROYED 状態になります。
次の図は、フラグメントのライフサイクルと状態間の遷移をまとめたものです。
ライフサイクル状態とコールバック メソッドは、アクティビティに使用されるものと非常に似ています。ただし、onCreate()
アプローチの違いに注意してください。アクティビティでは、このメソッドを使用してレイアウトとバインドされたビューをインフレートできます。ただし、フラグメントのライフサイクルでは、システムはビューを作成する前にそれを呼び出すためonCreate()
、ここでレイアウトをインフレートすることはできません。onCreateView()
代わりにこれを行うことができます。次に、ビューが作成された後、システムはonViewCreated()
プロパティを特定のビューにバインドできるメソッドを呼び出します。