如何实际地将动态数量的片段添加到活动中

时间:2013-08-17 21:08:20

标签: android android-fragments

我有一个布局文件的活动如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="2"
    android:fillViewport="true"
    android:gravity="top" >

    <LinearLayout
        android:id="@+id/foodItemActvity_linearLayout_fragments"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

   //>>>> Fragments to go here

    </LinearLayout>
</ScrollView>

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.35"
    android:gravity="bottom"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:onClick="orderFoodItemClicked"
        android:text="Order this Item Now" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:onClick="backToMenuItemClicked"
        android:text="Back To Menu" />
</LinearLayout>

然后我有5个片段已经编码,每个片段都有自己的布局文件和类,这与现在无关。 说他们被称为这个例子:

fragment1.java fragment2.java fragment3.java

我想知道如何动态地将片段添加到线性布局中,如上所述。根据我的研究,我似乎需要一个Fragment管理器和一个LayoutInflater,但我不知道如何做到这一点。

到目前为止,我有这个:

LinearLayout fragmentsLayout = (LinearLayout) findViewById(R.id.foodItemActvity_linearLayout_fragments);

    for(int i=0; i < noOfFragments;i++){
        //Add fragment to fragmentsLayout
    }

现在我只是不确定如何添加我想要的某些片段?

编辑: 如何指定片段的布局参数等详细信息?

2 个答案:

答案 0 :(得分:1)

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
for(int i=0; i < noOfFragments;i++){
       ft.add(R.id.foodItemActvity_linearLayout_fragments, fragments[i], "fragment tag" + i);
}
ft.commit();

答案 1 :(得分:0)

您是否看过Android开发者指南中的片段。它解释了如何以编程方式管理片段。 http://developer.android.com/guide/components/fragments.html