私の質問は、明らかな継承の違いとは別に、 Fragment
と FragmentActivity
の主な違いは何ですか?各クラスはどのシナリオに最適ですか?私はこれらのクラスの両方が存在する理由を理解しようとしています...
Fragment
はActivity
のセクションで、次のものがあります。
Activity
の実行中に追加または削除できます。Fragment
は、常にActivity
に埋め込む必要があります。
Fragments
は、HoneyComb(3.0)より前のAPIの一部ではありません。 HoneyCombより前のプラットフォームバージョンを対象とするアプリでFragments
を使用する場合は、プロジェクトに Support Package を追加し、_ FragmentActivity
を使用してFragments
を保持する必要があります。 FragmentActivity
クラスにはFragments
を処理するためのAPIがありますが、HoneyCombより前のActivity
クラスにはありません。
プロジェクトがHoneyComb以降のみをターゲットにしている場合は、Activity
を保持するためにFragmentActivity
ではなくFragments
を使用する必要があります。
いくつかの詳細:
Activity
でAndroid.app.Fragment
を使用します。 FragmentActivity
でAndroid.support.v4.app.Fragment
を使用します。サポートパッケージFragment
をActivity
に追加しないでください。例外がスローされます。
注意すべき点:FragmentManager
とLoaderManager
には、FragmentActivityの個別のサポートバージョンがあります。
Fragment
(HoneyComb以上)でActivity
を使用している場合は、呼び出します
getFragmentManager()
を取得してAndroid.app.FragmentManager
を取得getLoaderManager()
を取得してAndroid.app.LoaderManager
を取得Fragment
(HoneyComb以前)で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は、フラグメントをサポートする従来のアクティビティであり、それ以上のものはありません。そのため、アクティビティにFragmentが添付される場合、FragmentActivityが必要です。
Well Fragmentは、Activityの基本的な動作をコピーする優れたコンポーネントであり、Activityのようなスタンドアロンアプリケーションコンポーネントではなく、動作するためにActivityにアタッチする必要があります。
詳細は here をご覧ください
FragmentActivityは、フラグメントをサポートできる通常のアクティビティクラスと考えてください。ハニカムの前は、アクティビティクラスはフラグメントを直接サポートできなかったため、フラグメントを使用するアクティビティでこれが必要です。
ターゲット配布がHoneycomb以上である場合は、代わりにActivityから拡張できます。
また、フラグメントは「サブアクティビティ」と見なされます。アクティビティなしでは存在できません。フラグメントは常にサブアクティビティであると考えてください。あなたは良いはずです。したがって、アクティビティは親であり、フラグメントは子の種類のシンボリック関係になります。
fragmentActivityは、Fragmentを含むアドホックアクティビティです。これらのいくつかの言葉で、Android 3.0(HoneyComb)でAndroidチームがAndroid SDKに挿入した主な重要な変更の1つを説明しました。
これらの新しい種類の概念により、コードとレイアウトの部分がより柔軟で保守可能になります。 Googleで検索する場合、多くの例があります。