2013-09-21 167 views
8

我有沒有孩子的LinearLayout意見動態地添加多個片段到我的活動佈局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 


</LinearLayout> 

,我想動態添加一個片段或兩個片段按它的要求。 我知道增加一個片段,但我怎麼能添加兩個片段動態地給它。 我有兩個片段,並且每個片段內我寫以下oncreateview

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     //return super.onCreateView(inflater, container, savedInstanceState); 
     View v=inflater.inflate(R.layout.frag1, container, false); 
     v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 

     return v; 
    } 

我試圖使用以下代碼來添加,但第二片段過來的第一個。

FragmentTransaction ft=fm.beginTransaction(); 
     frag1 f=new frag1(); 
     frag2 ff=new frag2(); 


     ft.add(android.R.id.content, f); 
     ft.add(android.R.id.content, ff); 

     ft.commit(); 

好心地更新如何做到這一點。 感謝

+1

+1我也在尋找這個問題的答案...這似乎這樣一個重要的問題,但我無法找到答案:/ - 在活動佈局中動態添加兩個片段 - 這對我來說看起來非常標準,但它並不包含在任何afaik中。 – AgentKnopf

+0

對此的更新是,您不能將兩個添加到android.R.id.content,而是添加到Layout(如LinearLayout或其他任何一個ID),如下所示:if id one是viewgroup的id,然後ft.add(R.id 。一中,f, 「一個」); ft.add(R.id.one,FF, 「二」); ft.commit();請嘗試一下並更新 – user2779311

+0

謝謝你回覆我:)!實際上現在我發現了一種在一個Activity中託管兩個片段的方法。所有需要做的事情是在佈局中放置兩個容器 - 每個片段一個,然後爲它們設置一個重量。如:第一個容器獲得30%的空間,第二個容器獲得70%的空間。如果你需要更多的細節,請讓我知道。它大部分都是在佈局文件中設置的,所以你會改變你的片段事務,把每一個添加到它的目標容器的ID中。 – AgentKnopf

回答

0

這shoudl做的伎倆:

FragmentTransaction ft=fm.beginTransaction(); 
    frag1 f=new frag1(); 
    frag2 ff=new frag2(); 
    LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 

    ft.add(android.R.id.content, f).commit(); 
    FragmentTransaction ft=fm.beginTransaction(); // this line might be unnescessary 
    ft.add(android.R.id.content, ff).commit(); 
+0

這是一樣的,我已經寫了,但它不工作。 – user2779311

+0

如果將主LinearLayout的LayoutParams設置爲wrap_content,它應該可以工作。 – Ehsan