Android -- Fragment

一、靜態的使用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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章