2013-02-05 6 views
7

私はフラグメントを学習していますが、フラグメントにコンテナが必要な理由の背後にある意味を理解できません。Android用フラグメントのコンテナの目的

次のように仕事がある私は、フラグメントを理解する方法:

  1. FragmentActivity setContentviewは断片が位置するであろう場所 を定義するXMLファイルを参照します。

  2. FragmentActivity次に容器に断片を割り当て断片

  3. のインスタンスを作成します。

  4. FragmentManagerに表示されます。

  5. 次に、実際のFragmentクラスはレイアウトを膨張させ、 にすべてのアプリケーションUIコンポーネントが含まれるのはこのレイアウトです。

(ここで私が覚えているので、私が覚えているので、ここで訂正してください)

コンテナの目的はなぜ私たちも必要なのですが、私が見たすべての例では、これは単に空の相対レイアウトxmlドキュメントであるからです。

異なるフラグメントが(同じRelativeLayout xmlファイルから)同じコンテナを共有できますか?彼らはListFragmentを持っているし、アイテムがコールバックインタフェースを使用して選択されたときに我々は最終的にはこのコード行に取得

グーグルhttp://developer.android.com/training/basics/fragments/creating.htmlによって提供された例ではそう

// Replace whatever is in the fragment_container view with this fragment, 
// and add the transaction to the back stack so the user can navigate back 
transaction.replace(R.id.fragment_container, newFragment); 

マイ他の質問は次のとおりです:

1)なぜこのコード行は、記事断片でListFragment(左側の断片)を置き換えないのですか?それが初期化されたとき以来、私たちは以下を参照してください。

getSupportFragmentManager().beginTransaction() 
        .add(R.id.fragment_container, firstFragment).commit(); 

代わりに... ListFragmentは左側に残り、右のフラグメントが更新されます。 ただし、container_containerはfirstFragmentに属します。これはListFragmentです。 これは更新されたものではありません。

なぜ私に質問がありますか?これはチュートリアルでは説明していません。ここで

答えて

3

http://marakana.com/s/post/1250/android_fragments_tutorial

そして、ここで:http://developer.android.com/guide/components/fragments.html

これを読むと、すべては明らかであろう:)

断片は、活動の一部であり、唯一の活動の内側に存在することができます。したがって、フラグメントを処理できる特殊なタイプのアクティビティが必要です。これはFragmentActivityです。

フラグメンテーションのないフラグメンテーションは、通常のアクティビティとほぼ同じです。しかし、フラグメントを管理(追加、削除、置換)するためのFragmentManagerがあります。 FragmentnActivityにFragmentを追加する場合は、配置する場所を指定する必要があります(フラグメントはGooglePlayのようにフルスクリーンである必要はないため、複数の小さなフラグメントがあります)。だからこそコンテナが必要です。

異なるフラグメントが(同じRelativeLayout xmlファイル以降)同じコンテナを共有できますか?

はい、同じコンテナ内でフラグメントを別のフラグメントに置き換えることはできます。

+3

ステートメント "フラグメントを処理できる特殊なタイプのアクティビティが必要なので、フラグメンテーションアクティビティです。"旧バージョンのアンドロイドにも、サポートライブラリを使用しているときにも当てはまります。現在のバージョン(Android API 19など)では、デフォルトのアクティビティに既にフラグメント機能があります。例えば。 getFragmentManager()関数:http://developer.android.com/reference/android/app/Activity.html#getFragmentManager() – treesAreEverywhere

+0

複数のフラグメントを含むコンテナ内の特定のフラグメントを新しいフラグメントに置き換えるにはどうすればよいですか? –

+0

フラグメントの置換は、同じコンテナを共有する異なるフラグメントと同じではありません。一方が他方に置き換えられた場合、2つのフラグメントはコンテナを共有できません。 – craned

関連する問題