2012-05-15 8 views

答えて

255

Fragmentを有し、Activityの部分である:

  • 独自のライフサイクル
  • Activityの実行中に、自身の入力イベント
  • を追加または削除することができる受信します。

Fragmentは、必ずActivityに埋め込まなければなりません。

Fragmentsは、HoneyComb(3.0)より前のAPIの一部ではありません。 HoneyCombより前のバージョンのプラットフォームをターゲットにしているアプリケーションでFragmentsを使用する場合は、Support Packageをプロジェクトに追加し、Fragmentsを保持するのにFragmentActivityを使用する必要があります。 FragmentActivityクラスはFragmentsを扱うAPIを持っていますが、クラスはHoneyCombより前のクラスではありません。

あなたのプロジェクトがHoneyComb以上をターゲットにしている場合は、Fragmentsを保持するのにではなくActivityを使用する必要があります。

いくつかの詳細:

使用Activityandroid.app.Fragment。 とFragmentActivityを使用してください。サポートパッケージFragmentActivityに追加しないでください。例外がスローされます。

に注意すること:FragmentManagerLoaderManagerがFragmentActivityに個別のサポートバージョンを持っている:

あなたは(アップハニカムと)ActivityFragmentを使用している場合は、

  • getFragmentManager()を取得するために呼び出しますandroid.app.LoaderManager
01を得るために android.app.FragmentManager
  • あなたがFragmentActivity(前ハニカム)でFragmentを使用している場合は、呼び出し:

    • getSupportFragmentManager()android.support.v4.app.FragmentManagerを取得します。 はまた、知っておくと便利

      //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() 
      

      をしないので、android.support.v4.app.LoaderManager

    を取得する

  • getSupportLoaderManager()は、フラグメントが中に埋め込まれなければならながらということですActivityは、Activityレイアウトの一部である必要はありません。これは、独自のUIを持たずに、アクティビティの不可視の作業者として使用できます。

  • +5

    ただし、フラグメントはアクティビティレイアウトの一部である必要はありません。あなたは、アクティビティの目に見えない作業者として独自のUIを持たないフラグメントを使用することもできます。 – uzay95

    +1

    @ uzay95これを指摘してくれてありがとう。私はそれに言及する最後にセクションを追加しました。 –

    +0

    @ GunnarKarlsson fragmentActivityにフラグメントを追加しますか? – Dhasneem

    14

    フラグメントアシスタントは、フラグメントサポートを備えた私たちの古典的なアクティビティです。したがって、FragmentActivityは、フラグメントがアクティビティーにアタッチされるときに必要です。

    Well Fragmentは、Activityの基本的な動作をコピーする優れたコンポーネントですが、Activityのようなスタンドアロンのアプリケーションコンポーネントではなく、動作させるためにActivityにアタッチする必要があります。詳細

    +1

    BTW、API 11より古いデバイスで作業したいアプリにのみ適用される最新の回答です。 – ToolmakerSteve

    +0

    @ToolmakerSteveで詳細を教えてください。可能であれば、最新のバージョンで回答を編集できますか? –

    1

    FragmentActivityため

    ルックhereは、フラグメントを含むアドホックな活動です。 ここでは、アンドロイド3.0(HoneyComb)、アンドロイドチームがアンドロイドSDKに挿入した主な重要な変更の1つについて説明します。

    これらの新しい種類のコンセプトを使用すると、コードとレイアウトの断片がより柔軟でメンテナンス可能になります。 Googleで検索する場合は、多くの例があります。

    8

    FragmentActivityを、フラグメントをサポートできる通常のActivityクラスと考えてください。ハニカムの前に、アクティビティクラスはFragmentsを直接スーパープロテクションすることができなかったので、これはFragmentsを使用するアクティビティに必要です。

    対象となるディストリビューションがHoneycomb以上の場合は、代わりにアクティビティを拡張することができます。

    また、フラグメントは「サブアクティビティ」とみなされます。活動なしでは存在できません。常にフラグメントをサブアクティビティと考えると、あなたは良いものになるはずです。したがって、活動は親であり、断片的なものは子供の象徴的な関係です。

    関連する問題