fragment和activity之間的區別

首先這裏不準備論述fragment和activity的具體定義,用法和概念。只是建立在瞭解這兩個東西的基礎上談區別。

在理解二者之間的區別的時候,只需要不斷的問自己一個問題,就是fragment能做到的Activity能做到嗎?可以做到的話沒問題,不可以做到的話,爲什麼不可以呢?這個爲什麼就是區別。先來看兩者的生命週期,這個不必多說。 

 

1.fragment顯得更加靈活。可以直接在XML文件中添加<fragment/>,Activity則不能。

eg:

<fragment

Android:id="@+id/left_fragment"

Android:name="com.example.fragmenttest.LeftFragment"

…/>   

<fragment

Android:id="@+id/right_fragment"

Android:name="com.example.fragmenttest.rightFragment"

…/>

2.可以在一個界面上靈活的替換一部分頁面,Activity不可以,做不到。

替換的時候注意要將這個fragment放在返回棧上。

3.fragment和Activity之間的通信:(也就是控件的相互操控)

fragment控制fragment:得到一個Activity,然後通過這個Activity的getFragmentManager()獲得該Fragment的實例。

fragment控制Activity:這個很簡單。每個Fragment都有getActivity()得到一個Activity

MainActivity activity=getActivity();

Activity控制fragment:xxxFragment xxx=getFragmentManager().findFragmentById();

Activity控制Activity:這個顯然是通過Intent  Activity之間的通信完成。別忘了在被打開的活動中創建Intent和得到Intent一起進行,寫個靜態的actionStart()。

4.fragment和Activity中控件的加載

Fragment的載入是通過OnCreateView的時候通過inflater.inflate()加載佈局,然後通過修改main.xml,在main.xml上增加註冊fragment標籤,然後通過android:name來載入你已經通過inflater加載的隱藏佈局。

有幾個關鍵點:fragment是通過inflater加載View然後在main.xml中註冊得到的。當然如果你可以在fragment中得到View那就可以通過View.findViewId()來操控fragment上的具體控件。

5.動態加載不同的fragment:

首先,監聽你的按鈕。

1.創建待加載fragment的實例

2.得到FragmentManager,在活動中可以直接調用getFragmentManager()方法獲得。

3.調用Manager的BeginTansation()

4.用replace()改變不同的Fragment

5.commit事務。

6.碎片的生命週期

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章