fragments
Android 3.0 では、スマートフォンやタブレットで検出されるさまざまな画面サイズに対して、より柔軟なデザインをサポートする方法を示すフラグメントが導入されました。 この記事では、フラグメントを使用して Xamarin.Android アプリケーションを開発する方法について説明します。さらに、Android 3.0 (API レベル 11) の前のデバイスでフラグメントをサポートする方法も説明します。
フラグメントの概要
ほとんどのタブレットで検出される大きな画面サイズによって、Android 開発がさらに複雑になりました。つまり、小さな画面用にデザインされたレイアウトが大きな画面でも必ず同じように動作するわけではありません。 これにより発生した複雑さを軽減するために、Android 3.0 には、"フラグメント" と "サポート パッケージ" という 2 つの新機能が追加されました。
フラグメントは、ユーザー インターフェイス モジュールと考えることができます。 これにより、開発者は、個別のアクティビティで実行できる分離された再利用可能なパーツにユーザー インターフェイスを分割できます。 実行時に、アクティビティ自体が、使用するフラグメントを決定します。
サポート パッケージは、最初は "互換性ライブラリ" という名前であり、Android 3.0 (API レベル 11) より前のバージョンの Android を実行するデバイスでのフラグメントの使用を可能にしていました。
たとえば、次の図は、単一のアプリケーションで、さまざまなデバイスのフォーム ファクター間でフラグメントを使用する方法を示しています。
"フラグメント A" にはリストが含まれ、"フラグメント B" にはそのリストで選択された項目の詳細が含まれます。 アプリケーションをタブレットで実行すると、両方のフラグメントが同じアクティビティで表示されます。 同じアプリケーションを (画面サイズが小さい) 携帯電話で実行すると、フラグメントは 2 つの独立したアクティビティでホストされます。 フラグメント A とフラグメント B はどちらのフォーム ファクターでも同じですが、それらをホストするアクティビティは異なります。
これらのフラグメントのすべてをアクティビティによって調整して管理できるように、Android には FragmentManager という名前の新しいクラスが導入されました。 各アクティビティには、ホストされているフラグメントを追加、削除、および検索するための FragmentManager
の独自のインスタンスがあります。 フラグメントとアクティビティ間の関係を次の図に示します。
ある意味で、フラグメントは、複合コントロールまたはミニアクティビティとみなすことができます。 それらは、UI のピースを、アクティビティの開発者が個別に使用できる再利用可能なモジュールにまとめます。 フラグメントにはアクティビティと同様にビュー階層がありますが、アクティビティとは異なり、フラグメントは画面間で共有できます。 フラグメントには独自のライフサイクルがありますが、ビューにはないという点で、ビューとフラグメントは異なります。
アクティビティは 1 つ以上のフラグメントのホストですが、フラグメント自体を直接認識することはありません。 同様に、フラグメントが、ホスト アクティビティ内の他のフラグメントを直接認識することはありません。 ただし、フラグメントとアクティビティは、アクティビティ内の FragmentManager
を認識します。 FragmentManager
を使用することで、アクティビティまたはフラグメントでフラグメントの特定のインスタンスへの参照が取得され、そのインスタンスでメソッドを呼び出すことができます。 このような方法で、アクティビティまたはフラグメントは、他のフラグメントと通信して対話処理を行うことができます。
このガイドでは、フラグメントの使用方法について包括的に説明します。以下が含まれます。
- フラグメントの作成 – 基本的なフラグメントと、実装する必要があるキー メソッドを作成する方法。
- フラグメントの管理とトランザクション – 実行時にフラグメントを操作する方法。
- Android サポート パッケージ – 以前のバージョンの Android でフラグメントを使用できるようにするライブラリを使用する方法。
必要条件
フラグメントは、次のスクリーンショットに示すように、API レベル 11 (Android 3.0) 以降の Android SDK で使用できます。
フラグメントは、Xamarin.Android 4.0 以降で使用できます。 Xamarin.Android アプリケーションでフラグメントを使用するには、少なくとも API レベル 11 (Android 3.0) 以降をターゲットにする必要があります。 次に示すように、プロジェクトの [プロパティ] にターゲット フレームワークを設定できます。
Android サポート パッケージと Xamarin.Android 4.2 以降を使用することで、以前のバージョンの Android でフラグメントを使用することができます。 これを実行する方法については、このセクションのドキュメントで詳しく説明します。