Fragment是android3.0引入的,為什麼google推出Fragment呢?主要目的是用在大屏幕設備上–例如平板電腦上,支持更加動態和靈活的UI設計。平板電腦的屏幕要比手機的大得多,有更多的空間來放更多的UI組件,並且這些組件之間會產生更多的交互,Fragment允許這樣的一種設計,而不需要你親自來管理
viewhierarchy的復雜變化。 通過將activity的佈局分散到fragment中, 你可以在運行時修改activity的外觀,可以把Fragment看作是activity界面上的一部分,首先看下圖:
第一張圖我們看到,點擊左邊的item跳轉到右邊的佈局上顯示,這時候就要啟動一個activity,而下面的圖點擊左邊的item,可以在右邊顯示,用Fragment來顯示就行,而不用啟動activity,我們知道activity是android的組件,所以它比Fragment占用的內存就大,這就是為什麼在大點的屏幕推薦使用FragmentvcD4KPHA+z9bU2rS0vajSu7j2QW5kcm9pZM/uxL9GcmFnbWVudDE8L3A+CjxwPmFjdGl2aXR5X21haW4ueG1sPC9wPgo8cD48cHJlIGNsYXNzPQ==”brush:java;”>
在佈局中發現一個節點fragment,而我們以前layout中view都是大寫字母開頭,比如:TextView,所以fragment並不是一個view對象,而是一種類型,android:name指的是Fragment類的全類名,所以Fragment1要繼承Fragment對象,如果是使用 android.app.Fragment包下的,那麼指定的最小版本必須是11(android:minSdkVersion=”11″)小於11程序就會報錯,因為系統的Fragment是3.0出現的,
Fragment1.java
package com.example.fragment1; 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 { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment1, null); } }
fragment1.xml
Fragment2.java
package com.example.fragment1; 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) { return inflater.inflate(R.layout.fragment2, null); } }fragment2.xml
MainActivity.java
package com.example.fragment1; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }我們看到MainActivity類中並沒有寫任何代碼,這是靜態創建Fragment,效果圖:
![]()