Android-フラグメント

A Fragment よりモジュール化されたアクティビティ設計を可能にするアクティビティの一部です。フラグメントは一種のフラグメントであると言えば間違いではありません sub-activity

以下はフラグメントに関する重要なポイントです-

  • フラグメントには、独自のレイアウトと、独自のライフサイクルコールバックを備えた独自の動作があります。

  • アクティビティの実行中に、アクティビティのフラグメントを追加または削除できます。

  • 1つのアクティビティで複数のフラグメントを組み合わせて、マルチペインUIを構築できます。

  • フラグメントは複数のアクティビティで使用できます。

  • フラグメントのライフサイクルは、ホストアクティビティのライフサイクルと密接に関連しています。つまり、アクティビティが一時停止すると、アクティビティで使用可能なすべてのフラグメントも停止します。

  • フラグメントは、ユーザーインターフェイスコンポーネントを持たない動作を実装できます。

  • フラグメントは、AndroidのHoneycombバージョン(APIバージョン11)のAndroidAPIに追加されました。

拡張してフラグメントを作成します Fragment クラスとアクティビティのレイアウトファイルでフラグメントを宣言することにより、アクティビティレイアウトにフラグメントを挿入できます。 <fragment> 素子。

フラグメントを導入する前は、特定の時点で画面に表示できるアクティビティは1つだけであるため、制限がありました。そのため、デバイスの画面を分割して、異なる部分を個別に制御することはできませんでした。しかし、フラグメントの導入により、柔軟性が向上し、一度に1つのアクティビティを画面に表示するという制限がなくなりました。これで、単一のアクティビティを作成できますが、各アクティビティは、独自のレイアウト、イベント、および完全なライフサイクルを持つ複数のフラグメントで構成できます。

以下は、フラグメントによって定義された2つのUIモジュールを、タブレットデザインでは1つのアクティビティに結合し、ハンドセットデザインでは分離する方法の典型的な例です。

タブレットサイズのデバイスで実行している場合、アプリケーションはアクティビティAに2つのフラグメントを埋め込むことができます。ただし、携帯電話サイズの画面では、両方のフラグメントを格納するための十分なスペースがないため、アクティビティAには記事のリストのフラグメントのみが含まれ、ユーザーが記事を選択すると、アクティビティBが開始されます。アクティビティBには、2番目に読み取るフラグメントが含まれます。記事。

フラグメントのライフサイクル

Androidフラグメントには、Androidアクティビティと非常によく似た独自のライフサイクルがあります。このセクションでは、ライフサイクルのさまざまな段階について簡単に説明します。

フラグメントのライフサイクル

フラグメントクラスでオーバーライドできるメソッドのリストは次のとおりです-

  • onAttach()フラグメントインスタンスはアクティビティインスタンスに関連付けられています。フラグメントとアクティビティは完全に初期化されていません。通常、このメソッドでは、フラグメントを使用してさらに初期化作業を行うアクティビティへの参照を取得します。

  • onCreate()フラグメントを作成するときに、システムはこのメソッドを呼び出します。フラグメントが一時停止または停止したときに保持するフラグメントの重要なコンポーネントを初期化してから、再開する必要があります。

  • onCreateView()フラグメントがユーザーインターフェイスを初めて描画するときに、システムはこのコールバックを呼び出します。フラグメントのUIを描画するには、Viewフラグメントのレイアウトのルートであるこのメソッドのコンポーネント。フラグメントがUIを提供しない場合は、nullを返すことができます。

  • onActivityCreated()onActivityCreated()は、ホストアクティビティが作成されるときにonCreateView()メソッドの後に呼び出されます。アクティビティとフラグメントインスタンス、およびアクティビティのビュー階層が作成されました。この時点で、findViewById()メソッドを使用してビューにアクセスできます。例。このメソッドでは、Contextオブジェクトを必要とするオブジェクトをインスタンス化できます。

  • onStart()フラグメントが表示されると、onStart()メソッドが呼び出されます。

  • onResume()フラグメントがアクティブになります。

  • onPause()システムは、ユーザーがフラグメントを離れることを示す最初の指標としてこのメ​​ソッドを呼び出します。これは通常、現在のユーザーセッションを超えて永続化する必要がある変更をコミットする必要がある場所です。

  • onStop()onStop()を呼び出すことでフラグメントが停止します

  • onDestroyView()このメソッドを呼び出すと、フラグメントビューが破棄されます

  • onDestroy()onDestroy()は、フラグメントの状態の最終的なクリーンアップを行うために呼び出されますが、Androidプラットフォームによって呼び出されることが保証されていません。

フラグメントの使用方法は?

これには、フラグメントを作成するためのいくつかの簡単な手順が含まれます。

  • まず、アクティビティで使用するフラグメントの数を決定します。たとえば、2つのフラグメントを使用して、デバイスの横向きモードと縦向きモードを処理するとします。

  • 次に、フラグメントの数に基づいて、Fragmentクラスを拡張するクラスを作成します。Fragmentクラスには、上記のコールバック関数があります。要件に基づいて、任意の関数をオーバーライドできます。

  • 各フラグメントに対応して、XMLファイルでレイアウトファイルを作成する必要があります。これらのファイルには、定義されたフラグメントのレイアウトがあります。

  • 最後に、アクティビティファイルを変更して、要件に基づいてフラグメントを置き換える実際のロジックを定義します。

フラグメントの種類

基本的にフラグメントは、以下に示すように3つの段階に分けられます。

  • シングルフレームフラグメント-シングルフレームフラグメントは、モバイルなどのハンドホールドデバイスに使用されています。ここでは、1つのフラグメントのみをビューとして表示できます。

  • リストフラグメント-特別なリストビューを持つフラグメントはリストフラグメントと呼ばれます

  • フラグメントトランザクション-フラグメントトランザクションで使用します。あるフラグメントを別のフラグメントに移動できます。