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