2015年7月9日 星期四

Android-Fragment 簡易說明

建立Fragment頁面時到底要匯入V4開發包?原生SDK?

簡單的說 : 

V4 開發包 : 針對Android 3.0 以下(API 11 以下用戶 )設置。
原生SDK : 針對Android 3.0以上 ( API 11 以上用戶 ) 設置。

加載方式 : 靜態 、 動態
靜態加載
fragment
動態加載
LinearLayout

直接介紹最常用的動態加載

剛開始接觸的大大一定會被網路上多個範例搞得頭昏腦脹吧 !
我們直接用手機介面介紹( 官方有介紹平板跟手機的應用 )

以下的圖,是我所想到離生活最近的範例。













其實真的不用想太多
1 . 在 Activity 劃一個投影區塊(LinearLayout)
2 . 新增繼承 Fragment 的頁面
3 . 在 Activity 的 LinearLayout 載入 Fragment
4 . 結束

以下有範例,只需要新增此程式,不須註冊 Activity

frist_fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="Frist" />

</LinearLayout>

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

public class FristFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        
        // 
        View view = inflater.inflate(R.layout.frist_fragment, container, false);

        return view;
    }

}

activity_main.xml
<RelativeLayout 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" >

    <LinearLayout
        android:id="@+id/linearLayout_01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:visibility="gone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />

    </LinearLayout>

</RelativeLayout>

MainActivity.java


import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        FristFragment fragment2=new FristFragment();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
        beginTransaction.add(R.id.linearLayout_01, fragment2);
        beginTransaction.addToBackStack(null);
        beginTransaction.commit();

        // 或

        if (savedInstanceState == null) {
            getFragmentManager()
                .beginTransaction()
                .add(R.id.linearLayout_1, new FristFragment())
                .commit();
        }
        
    }
}

至於為什麼要加 addToBackStack?















參考資訊 : Android Fragment

歡迎轉載,請註明出處。

沒有留言:

張貼留言