android fragment學習筆記

fragment相當於網頁中的塊,一個activity中可以包含多個fragment,互相獨立,互不干擾。但可以通過定義回調接口的方式來實現相互通訊。

每個fragment寄生在activity中,當activity生命週期爲onPause()時,其包含的每個fragment也會調用各自的onPause()方法。

fragment可以在佈局文件中定義,可以針對不同的屏幕大小設計不同的佈局文件。如果將fragment固定寫在佈局文件中,則在運行時不可以隨意更改。

若要在運行時更改,需要在java代碼中動態添加。可以通過getSupportFragmentManager()方法獲取一個fragmentManager。

對於fragment的add,replace都被作爲事務來處理。(和數據庫類似),每次更改完記得commit!

對於動態添加的fragment,必須爲其制定一個container(所依附的佈局),下面是android sdk上添加fragment的例子片段

HeadlinesFragment firstFragment = newHeadlinesFragment();

getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment).commit();


若在運行期間替換fragment,需要用到replace方法,若要保存被替換的fragment狀態,需要在commit方法前調用addToBackStack()方法。保證用戶按返回鍵時可以看到之前被替換掉的fragment頁面。

下面android sdk上替換fragment的例子片段

ArticleFragment newFragment = new ArticleFragment();

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();

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