一、静态的使用Fragment

主布局文件(定义两个Fragment):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
   <fragment
       android:id="@+id/fragment1"
       android:name="com.shao.fragment.Fragment1"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_weight="1"
       />
   <!-- android:name="com.shao.fragment.Fragment2"注意这个属性 -->
    <fragment
       android:id="@+id/fragment2"
       android:name="com.shao.fragment.Fragment2"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_weight="1"
       />
</LinearLayout>


然后需要定义两个fragment布局文件,这里不再给出。


定义两个Fragment类,继承Fragment。

public class Fragment1 extends Fragment {
    /*
     * fragment创建时调用。返回一个view视图。
     * */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
                                                         
        return inflater.inflate(R.layout.fragment1, null);
    }
}


public class Fragment2 extends Fragment {
    /*
     * fragment创建时调用。返回一个view视图。
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment2, null);
    }
}


主Activity不做任何的修改。


运行结果:

181404961.jpg



二、动态的使用Fragment:


将上例中的布局文件中的两个Fragment删掉,然后其他不做任何修改。主Activity修改为如下:


public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 判断手机的朝向
        int width = getWindowManager().getDefaultDisplay().getWidth();// 获得屏幕的宽
        int height = getWindowManager().getDefaultDisplay().getHeight();// 获得屏幕的高
        Fragment1 fragment1 = new Fragment1();
        Fragment2 fragment2 = new Fragment2();
        // 获得Fragment的管理者和事物
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        if (width > height) {// 水平方向.android.R.id.content意為當前页的布局id
            ft.replace(android.R.id.content, fragment1);
        } else {// 竖直方向
            ft.replace(android.R.id.content, fragment2);
        }
        ft.commit();//提交事物,否则没有任何的效果
    }
}

运行结果:

181810724.jpg

181812269.jpg