Fragment(碎片)的靜態建立android
什麼是碎片?
簡單來講上圖的左半邊 就是一個碎片 右半邊也是一個碎片 -- 基礎階段先這樣理解
什麼是靜態建立碎片?
就是在一個主Activity.xml文件佈局里布局好fragment(碎片) -- 能夠當作大容器的一個小布局
注意:碎片類都要繼承Fragment
接下來實現上圖界面佈局 -- 碎片的靜態建立
一、在res/layout佈局文件裏有3個佈局
1 -- 一個activity_main.xml -- 用來放左邊和右邊的碎片
2 -- 一個left_fragment.xml -- ListView -- 把數據綁到該ListView上
而後在把該ListView 放到左邊的碎片上
3 -- 一個right_fragment.xml -- TextView -- 把TextView放到右邊碎片上
activity_main.xml佈局文件
代碼
<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="horizontal" >
<!-- name裏 爲 包名.類名 -->
<!--左邊的碎片-->
<fragment
android:id="@+id/left_fragment"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:name="com.example.fragment_static.Left_fragment"/>
<!--右邊的碎片-->
<fragment
android:id="@+id/right_fragment"
android:layout_width="0dp"
android:layout_weight="2"
android:layout_height="wrap_content"
android:name="com.example.fragment_static.Right_fragment" />
</LinearLayout>ide
------------------佈局
left_fragment.xml佈局文件
代碼xml
<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">繼承
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent" />生命週期
</LinearLayout>
------------------
right_fragment佈局文件get
代碼it
<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" >io
<TextView
android:id="@+id/right_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="右邊fragment" />class
</LinearLayout>
==================================
二、Left_fragment(左邊碎片) 類名
代碼
public class Left_fragment extends Fragment {
private ArrayAdapter<String> adapter;
private ListView listview;
@Override//fragment被添加到宿主Activity時被回調 -- 緊回調一次
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override//建立fragment時回調 -- 緊回調一次
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化 須要的數據
String[] names = new String[20];
for(int i = 0;i<20;i++){
names[i] = "lala" + i;
}
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, names);
}
//必須重寫該方法
@Override//每次建立 、繪製fragment時 都會調用該 方法 -- 調用屢次
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.left_fragment,container, false);
listview = (ListView) view.findViewById(R.id.listview);
listview.setAdapter(adapter);
//返回一個ListView 佈局視圖到有該類 -- 包名.類名 的Fragment(碎片) 佈局上
return view;
}
}
------------------
三、Right_fragment(碎片) 類
代碼
public class Right_fragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.right_fragment, container, false);
//返回一個TextView到 右邊的碎片上
return view;
}
}
-----------------
四、MainActivity 類
代碼
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
==============================================
Fragment生命週期:
(一)、Fragment基本狀態:
一、活動狀態:Resumed 當前Fragment位於前臺,用戶可見,能夠得到焦點;
二、暫停狀態: Paused 另外一個Activity處於前臺並擁有焦點, 可是該Fragment所在的Activity仍然可見(前臺Activity局部透明或者沒有覆 蓋整個屏幕),不過不能得到焦點;
三、中止狀態:Stopped
要麼是宿主Activity已經被中止, 要麼是Fragment從Activity被移除但被添加到回退棧中; 中止狀態的Fragment仍然活着(全部狀態和成員信息被系統保持着)。 然而, 它對用戶再也不可見, 而且若是Activity被銷燬,它也會被銷燬;
四、銷燬狀態:Destroyed 只能等待被回收。
(二)、Fragment生命週期:【重點】
一、onAttach(): 當該Fragment被添加到Activity時被回調。該方法只會被調用一次;
二、onCreate(): 當建立Fragment時被回調。該方法只會被調用一次;
三、onCreateView():每次建立、繪製該Fragment的View組件時回調該方法,Fragment將會顯示該方法返回的View 組件;
四、onActivityCreated(): 當Fragment的宿主Activity被啓動完成後回調該方法;
五、onStart(): 啓動Fragment時被回調;
六、onResume(): onStart()方法後必定會回調onResume()方法;
七、onPause(): 暫停Fragment時被回調;
八、onStop(): 中止Fragment時被回調;
九、onDestroyView(): 銷燬該Fragment所包含的View組件時調用;
十、onDestroy(): 銷燬Fragment時被回調。該方法只會被調用一次;
十一、onDetach(): 將Fragment從Activity中刪除、替換完成時調用該方法。onDestroy()方法後必定會回調onDetach()方法。 該方法只會被調用一次。
十二、onInflate():
1三、onViewCreated():
【備註:】其中大多數程序必須實現Fragment的三個回調方法分別爲:
onCreate :系統建立Fragments 時調用,可作執行初始化工做或者當程序被暫停或中止時用來恢復狀態,跟Activity 中的onCreate至關。 onCreateView :用於首次繪製用戶界面的回調方法,必須返回要建立的Fragment 視圖UI。假如你不但願提供Fragment用戶界面則能夠 返回NULL。
onPause : 當用戶離開這個Fragment的時候調用,這時你要提交任何應該持久的變化,由於用戶可能不會回來。