私の質問は明らかな継承の違いとは別に、との主な違いは何FragmentですかFragmentActivity?各クラスはどのシナリオに最も適していますか?これらのクラスの両方が存在する理由を理解しようとしています...
4 に答える
AFragmentは、のセクションでありActivity、次のようになります。
- 独自のライフサイクル
- 独自の入力イベントを受け取ります
- の実行中に追加または削除できます
Activity。
Fragmentは常にに埋め込まれている必要がありますActivity。
FragmentsHoneyComb(3.0)より前のAPIの一部ではありません。FragmentsHoneyCombより前のプラットフォームバージョンを対象とするアプリで使用する場合は、プロジェクトにサポートパッケージFragmentActivityを追加し、を使用してを保持する必要がありますFragments。このFragmentActivityクラスには、を処理するためのAPIがありますが、 HoneyCombより前FragmentsのActivityクラスにはありません。
プロジェクトがHoneyComb以降のみを対象としている場合は、を保持するのActivityではなく、を使用する必要があります。FragmentActivityFragments
いくつかの詳細:
と一緒に使用android.app.FragmentしActivityます。と一緒に使用android.support.v4.app.FragmentしFragmentActivityます。Fragmentサポートパッケージをに追加しないでくださいActivity。例外がスローされます。
注意すべき点:FragmentActivityの個別のサポートバージョンがFragmentManagerあります:LoaderManager
(HoneyComb以上)でを使用Fragmentしている場合は、Activity
getFragmentManager()取得するためandroid.app.FragmentManagergetLoaderManager()取得するためandroid.app.LoaderManager
(HoneyComb以前)でを使用している場合は、次のように呼び出しFragmentます。FragmentActivity
getSupportFragmentManager()取得しますandroid.support.v4.app.FragmentManager。getSupportLoaderManager()取得するためandroid.support.v4.app.LoaderManager
だから、しないでください
//don't do this
myFragmentActivity.getLoaderManager();
//instead do this:
myFragmentActivity.getSupportLoaderManager();
また
//don't do this:
android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager();
//instead do this:
android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager()
また、フラグメントをに埋め込む必要がありますが、レイアウトActivityの一部である必要はないことも知っておくと便利です。Activity独自のUIがなくても、アクティビティの非表示のワーカーとして使用できます。
FragmentActivityは、フラグメントをサポートする従来のアクティビティであり、それ以上のものではありません。したがって、フラグメントがアクティビティにアタッチされる場合は、FragmentActivityが必要です。
Well Fragmentは、Activityの基本的な動作をコピーする優れたコンポーネントですが、Activityのようなスタンドアロンのアプリケーションコンポーネントではなく、動作するにはActivityにアタッチする必要があります。
詳細はこちらをご覧ください
FragmentActivityは、Fragmentsをサポートできる通常のActivityクラスと考えてください。ハニカムの前は、アクティビティクラスはフラグメントを直接サポートできなかったため、フラグメントを使用するアクティビティでこれが必要になります。
ターゲットディストリビューションがHoneycomb以降の場合は、代わりにActivityを拡張できます。
また、フラグメントは「サブアクティビティ」と見なされます。活動なしでは存在できません。フラグメントは常にサブアクティビティと考えてください。したがって、アクティビティは親であり、フラグメントは子のような象徴的な関係になります。
FragmentActivityは、Fragmentを含むアドホックアクティビティです。これらのいくつかの言葉で、Android 3.0(HoneyComb)で、AndroidチームがAndroidSDKに挿入した主な重要な変更の1つを説明しました。
これらの新しい種類の概念により、コードとレイアウトの断片がより柔軟で保守しやすくなります。あなたがグーグルで検索するならば、多くの例があります。