一、靜態的使用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不做任何的修改。
運行結果:
二、動態的使用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();//提交事物,否則沒有任何的效果 } }
運行結果: