1、新建一个Activity,在Activity中的布局是垂直的线性布局,2个button,一个FramLayout,为Framlayout设置一个id
2、新建2个Fragment,继承Fragment,在oncreatview中初始化fragment的布局
动态添加Fragment主要分为4步:
- 1.获取到FragmentManager,在V4包中通过getSupportFragmentManager,在系统中原生的Fragment是通过getFragmentManager获得的。
- 2.开启一个事务,通过调用beginTransaction方法开启。
- 3.向容器内加入Fragment,一般使用add或者replace方法实现,需要传入容器的id和Fragment的实例。
- 4.提交事务,调用commit方法提交。
在Activity中的布局
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:baselineAligned="false" >
-
- <Button
- android:id="@+id/btn_show_fragment1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="显示Fragment1"/>
-
- <Button
- android:id="@+id/btn_show_fragment2"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="显示Fragment2"/>
-
- <FrameLayout
- android:id="@+id/fragment_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
-
- </LinearLayout>
在Activity中的代码
其它代码都没有动,主要的是在MainActivity里,点击这两个按钮时做的处理:
- public class MainActivity extends FragmentActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- Button btnLoadFrag1 = (Button)findViewById(R.id.btn_show_fragment1);
- btnLoadFrag1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- FragmentManager manager = getSupportFragmentManager();
- FragmentTransaction transaction = manager.beginTransaction();
- Fragment1 fragment1 = new Fragment1();
- transaction.add(R.id.fragment_container, fragment1);
- transaction.commit();
- }
- });
-
- Button btnLoagFrag2 = (Button)findViewById(R.id.btn_show_fragment2);
- btnLoagFrag2.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- FragmentManager manager = getSupportFragmentManager();
- FragmentTransaction transaction = manager.beginTransaction();
- Fragment2 fragment2 = new Fragment2();
- transaction.add(R.id.fragment_container, fragment2);
- transaction.commit();
- }
- });
- }
- }
主要的步骤是
- FragmentManager manager = getSupportFragmentManager();
- FragmentTransaction transaction = manager.beginTransaction();
- Fragment1 fragment1 = new Fragment1();
- transaction.add(R.id.fragment_container, fragment1);
- transaction.commit();