2013-09-21 112 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