17

假设我有几个片段片段placehoder布局

public class FirstFragment extends Fragment { ... } 

public class SecondFragment extends Fragment { ... } 

public class ThirdFragment extends Fragment { ... } 

我也有一个主要活动,它的内容是(main.xml):

<LinearLayout ...> 

    <!-- How to have a fragment placehold without specify which fragment show here? --> 
    <fragment> 

</LinearLayout> 

我的问题是,在在布局文件上方,如何定义片段占位符而不指定在此处显示哪个片段,然后在我的活动java代码,膨胀适当的片段到占位符?

这是可能的和如何做到这一点?

回答

31

这是可能的。 在您的main.xml中,定义了片段的占位符,我们称之为“fragment_placeholder”:

<LinearLayout ...> 
<FrameLayout android:id="@+id/fragment_placeholder" android:layout_weight="1" 
     android:layout_width="0px" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

在您的活动,只要你想加载片段:

YourFragment fragment = new YourFragment(); 
FragmentTransaction ft = getFragmentManager().beginTransaction(); 
ft.replace(R.id.fragment_placeholder, fragment); 
ft.commit(); 
+1

ft.replace (...)应该改为ft.add(...)。 – 2012-03-13 14:00:18

+0

是的,android:layout_width应该设置为wrap_content – Markus 2013-12-10 09:22:29

+0

请参阅这里了解更多信息:http://developer.android.com/training/basics/fragments/fragment-ui.html – Hardy 2014-12-13 23:06:32