1. 程式人生 > >Android學習筆記(十三)——碎片(一)

Android學習筆記(十三)——碎片(一)

碎片

碎片可看作另外一種形式的活動,可以建立碎片來包含檢視。

碎片總是嵌入在活動中,一般有兩種常見形式:

1、碎片A和碎片B分別處於不同的活動中,當選擇碎片A中的某一項時,觸發碎片B啟動;

2、碎片A和碎片B處於同一個活動中,共享同一活動,以建立更佳的使用者體驗。

1、建立一個名為“Fragments”的專案,在res/layout資料夾下,分別新建fragment1.xml、fragment2.xml;在當前包名下,分別新建Fragment1.java、Fragment2.java:

fragment1.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00FF00"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is fragment #1"
        android:textColor="#000000"
        android:textSize="25sp" />

</LinearLayout>
fragment2.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFE00"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This is fragment #2"
        android:textColor="#000000"
        android:textSize="25sp" />

</LinearLayout>
Fragment1.java:
package net.zenail.fragments;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {// 繼承Fragment基類
	// 繪製碎片UI:使用一個LayoutInflauter物件來增大指定XML檔案中的UI。container引數引用父ViewGroup,準備用於嵌入碎片的活動。
	// savedInstanceState引數允許將碎片還原到前一次儲存的狀態。
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		return inflater.inflate(R.layout.fragment1, container, false);
	}
}


Fragment2.java:

package net.zenail.fragments;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment2 extends Fragment {
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		return inflater.inflate(R.layout.fragment2, container, false);
	}
}

2、在main.xml檔案中新增兩個碎片:
    <fragment
        android:id="@+id/fragment1"
        android:name="net.zenail.fragments.Fragment1"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:layout="@layout/fragment1" />

    <fragment
        android:id="@+id/fragment2"
        android:name="net.zenail.fragments.Fragment2"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="1"
        tools:layout="@layout/fragment2" />

3、執行,效果如下: