大画面用のレイアウトを作成しています。これは、左部分と右部分の2つの異なる部分で構成されています。そのためには、2つのフラグメントを使用するのが正しい選択だと思いました。
次に、Master/Detail-Flowを使用したナビゲーションの例を見てみました。これは2ペインレイアウトで、右側がナビゲーション、左側が詳細ビューです。
しかし、その例では、私が期待していたものとは異なり、詳細ビューには、FrameLayout
の代わりにFragment
を直接保持するFragment
があります。
レイアウトXMLは次のようになります(例)。
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginLeft="16dp"
Android:layout_marginRight="16dp"
Android:baselineAligned="false"
Android:divider="?android:attr/dividerHorizontal"
Android:orientation="horizontal"
Android:showDividers="middle"
tools:context=".WorkStationListActivity" >
<fragment
Android:id="@+id/workstation_list"
Android:name="de.tuhh.ipmt.ialp.history.WorkStationListFragment"
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="1"
tools:layout="@Android:layout/list_content" />
<FrameLayout
Android:id="@+id/workstation_detail_container"
Android:layout_width="0dp"
Android:layout_height="match_parent"
Android:layout_weight="3" />
</LinearLayout>
私の質問は次のとおりです:なぜFrameLayout
の代わりにFragment
が詳細ビューに使用されるのですか?理由または利点は何ですか?私もそれを使うべきですか?
表示されるFrameLayout
はFragment
の- replace()
メソッドを使用して置き換えられるため、詳細コンテナはFragmentTransaction
です。
replace()
の最初の引数は、フラグメントが置換されるコンテナのIDです。この例のFrameLayoutがFragmentに置き換えられた場合、WorkStationListFragment
と現在表示されている詳細なFragmentの両方が新しいFragmentに置き換えられます。 FragmentをFrameLayout内にカプセル化することにより、詳細だけを置き換えることができます。