可以把 Fragment 想象成 Activity 的模塊,它擁有自己的生命週期、接收輸入事件,可以在 Acvitity 運行過程中添加或者移除。
創建 Fragment 時,必須重寫 onCreateView() 回調方法來定義佈局。
Activity中如果用到Fragment 應該繼承自 FragmentActivity ,也可以繼承AppCompatActivity,AppCompatActivity 是 FragmentActivity 的子類。
動態添加Fragment
要執行添加或移除 Fragment 等事務,你必須使用 FragmentManager 創建一個 FragmentTransaction,後者可提供用於執行添加、移除、替換以及其他 Fragment 事務的 API。
如果 Activity 中的 Fragment 可以移除和替換,你應在調用 Activity 的 onCreate() 方法期間爲 Activity 添加初始 Fragment(s)。
以上這兩點了解一下就可以,現在關於FragmentTransaction的操作都在AS源碼裏面,我們不需要去管。在項目中的做法是需要幾個Fragment就動態添加幾個,然後在Activity的佈局中使用viewPager,兩者結合。(首頁中用FragmentTabHost和TabWidget結合做)。
用一個 Fragment 替換另一個 Fragment
請注意,當你執行替換或移除 Fragment 等 Fragment 事務時,最好能讓用戶向後導航和“撤消”所做更改。要通過 Fragment 事務允許用戶向後導航,你必須調用 addToBackStack(),然後再執行 FragmentTransaction。
當你移除或替換 Fragment 並向返回堆棧添加事務時,已移除的 Fragment 會停止(而不是銷燬)。如果用戶向後導航,還原該 Fragment,它會重新啓動。如果你沒有向返回堆棧添加事務,那麼該 Fragment 在移除或替換時就會被銷燬。
與其他 Fragment 交互
通常 Fragment 之間可能會需要交互,比如基於用戶事件的內容變更。所有 Fragment 之間的交互應通過與之關聯的 Activity 來完成。兩個 Fragment 之間不應直接交互。
爲了讓 Fragment 與包含它的 Activity 進行交互,可以在 Fragment 類中定義一個接口,並在 Activity 中實現。(必須實現接口)
Activity 中實現接口後調用的方法,用來和Fragment進行交互。
@Override
public void setSelectedFragment(BaseFragment selectedFragment) {
}