9

フラグメントを学んでいますが、フラグメントがコンテナを必要とする理由の背後にある重要性を理解できていません。

フラグメントの動作を理解する方法は次のとおりです。

  1. FragmentActivity setContentview は、フラグメントが配置される場所を定義する xml ファイルを参照します。

  2. FragmentActivity はフラグメントのインスタンスを作成します

  3. 次に、フラグメントをコンテナーに割り当てます。

  4. FragmentManager はそれらを表示します。

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

(私は今のところ学習しているだけなので、ここで何か見逃している場合は修正してください)。

では、コンテナの目的はなぜ必要なのですか。なぜなら、私が見たすべての例で、それは空白の相対レイアウト xml ドキュメントだからです。

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

したがって、Google http://developer.android.com/training/basics/fragments/creating.htmlが提供する例では

これらには ListFragment があり、CallBack インターフェイスを使用して項目が選択されると、最終的に次のコード行に戻ります。

// 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 は左側に残り、右側の Fragment が更新されます。しかし、コンテナ fragment_container は firstFragment に属します。これは ListFragment です。そして、これは更新されるものではありません。

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

4

1 に答える 1

3

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

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

これを読んでください、そしてすべてが明らかになるでしょう:)

フラグメントはアクティビティの一部であり、アクティビティ内にのみ存在できます。したがって、フラグメントを処理できる特別なタイプのアクティビティが必要です。それはFragmentActivityです。

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

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

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

于 2013-02-05T20:41:24.443 に答える