Android應用開發基礎教程課件第8章 Fragment_第1頁
Android應用開發基礎教程課件第8章 Fragment_第2頁
Android應用開發基礎教程課件第8章 Fragment_第3頁
Android應用開發基礎教程課件第8章 Fragment_第4頁
Android應用開發基礎教程課件第8章 Fragment_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目錄Fragment概述創建FragmentFragment生命周期Fragment管理Fragment之間通訊總結一、Fragment概述

Fragment(碎片)是Android3.0新增的功能,它與Activity非常相似,主要用于在Activity中描述一些行為或一部分用戶界面,使程序更加合理和充分利用手機屏幕的空間。Fragment使得Activity的設計模塊化,它必須被嵌入到一個Activity中。一個Activity中可以包含多個Fragment,Fragment同時也可被多個Activity使用。一、Fragment概述Fragment的優點如下:能夠將Activity分離成多個可重用的組件,每個都有它自己的生命周期和UI。輕松地創建動態靈活的UI設計,適應不同的屏幕尺寸。與Activity綁定在一起,可以在運行中動態地移除、加入、交換等。解決Activity間的切換不流暢問題,輕量切換。二、創建Fragment

創建一個Fragment和創建一個Activity類似,繼承Fragment類或Fragment的子類,重寫生命周期方法,主要不同之處是需要重寫一個onCreateView()方法來返回這個Fragment的布局。其中container是Fragment將會被添加的組,inflate()方法的第二個參數為null,因系統已將生成的布局加入到container中。二、創建Fragment

Fragment不能單獨顯示在手機屏幕上,要與Activity綁定才能使用,其中向Activity中添加Fragment有以下兩種方法:一種是靜態加載是直接在布局文件中添加,將Fragment作為布局中的一部分;另一種是動態加載,當Activity運行時,將Fragment放入到Activity中。二、創建Fragment

靜態加載示例如下:1<fragment2

android:id="@+id/fragment1"3

android:name="com.hzu.MyFragment"4

android:layout_width="wrap_content"5

android:layout_height=“wrap_content”6/>二、創建Fragment

動態加載示例如下:1FragmentManagerfragmentManager=getFragmentManager();2FragmentTransactiontransaction=fragmentManager.beginTransaction();3transaction.add(R.id.fragment1,newBlankFragment());4mit();fragmentManager.beginTransaction()用于獲取事件處理集,然后通過add()方法添加Fragment,再通過commit()提交事務。二、創建Fragment【例8.1】設計一個靜態添加Fragment的案例。【說明】在xml中添加Fragment。【開發步驟】(1)創建一個名為Fragment_test的項目,在res/layout的activity_main.xml文件中的內容如右圖所示:二、創建Fragment

(2)在res/layout下創建myfragment.xml文件,其內容如下圖所示:二、創建Fragment

(3)在src下包為com.hzu.fragment_test的MainActivity.java文件中編寫內容如下:二、創建Fragment

(4)在src的com.hzu.fragment_test包下創建MyFragment.java文件,編寫內容如下:二、創建Fragment

【運行結果】在Eclipse中啟動Android模擬器,接著運行Fragment_test項目,顯示效果如圖8-1所示。點擊圖8-1中的Button按鈕,會出現如圖8-2所示的效果。圖8-1運行效果圖8-2點擊效果三、Fragment生命周期

Fragment必須是依賴于Activity而存在,因此Activity的生命周期會直接影響到Fragment的生命周期。FragmentTransaction提供了很多操作Fragment的方法,如add()、replace()、attach()等,調用這些方法會觸發Fragment不同的生命周期。如果程序開發人員使用以上這些方法時不知道Fragment當前處于何種狀態是非常可怕的事情,直接影響到Android應用程序的質量與執行效率。三、Fragment生命周期

Fragment必須是依存與Activity而存在的,因此Activity的生命周期會直接影響到Fragment的生命周期。如右圖8-3所示:圖8-3生命周期四、Fragment管理FragmentTransaction允許將一系列的Fragment的操作在一次處理事務(Transaction)中完成。每個事務都是一組想要同時執行的方法,例如在一個事物中執行add()、remove()和replace()方法,然后調用commit()方法,把事務的執行結果反映到Activity中。注意,在調用commit()方法之前,為了把事務添加到Fragment事務的回退堆棧中,可能調用addToBackStack()方法。這個回退堆棧被Activity管理,并且允許用戶通過按返回鍵返回到先前的Fragment狀態。四、Fragment管理以下是添加、替換、隱藏和移除Fragment的方法:添加:add(intcontainerViewId,Fragmentfragment,Stringtag)替換:replace(intcontainerViewId,Fragmentfragment,Stringtag)隱藏:hide(Fragmentfragment)移除:remove(Fragmentfragment)四、Fragment管理

【例8.4】通過Fragment設置賀州新聞、賀州旅游和旅游咨詢三塊內容。【說明】點擊不同按鍵時賀州新聞、賀州旅游和旅游咨詢三塊內容可自由切換。圖8-3項目運行效果圖8-4切換效果五、Fragment之間通訊

Fragment經常需要在初始化或運行過程中與其他的Fragment進行數據傳遞。為了提高代碼的重用性,降低耦合度,一般在Fragment間不直接進行數據傳遞,而是使用Activity作為中介來進行數據傳遞。五、Fragment之間通訊

Fragment經常需要在初始化或運行過程中與其它的Fragment進行數據傳遞。五、Fragment之間通訊【例8.5】設計程序:分別在初始化Fragment時傳值到Fragment中與在程序運行過程中傳值到Fragment中的程序。【說明】主要使用setArguments()、getArguments()與自定義的方法進行數據處理。圖8-5運行效果圖8-6運行傳值效果。第一情況:在初始化Fragment時傳值,在Activity中使用Fragment的setArguments()方法將需要使用的數據通過綁定到Bundle對象上進行傳遞過去,而在Fragment中則使用getArguments()方法接收Bundle對象中的數據。如右圖8-7所示圖8-7。

第二種情況在程序運行過程中傳值到Fragment,在Fragment定義一個用于接收數據的方法。在Activity中調用Fragment中已經定義好的方法將數據傳遞

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論