《Android》『Interface』- 利用 Interface 於 MainActivity 中控管 Fragment 與 onBackPressed

《Android Developers 參考文獻》

➥Fragment

 

《簡單介紹》

在使用 Fragment 的過程中,我們為了管理方便,通常會將所有控制頁面切換的機制寫在 MainActivity 中,盡量避免直接在一個 Fragment 中跳轉至另一個 Fragment,這樣做的目的是,當 Fragment 變得越來越多時,才不會變得難以控管與維護,利用 implements Interface 的方式,我們可以在 MainActivity 中更有條理的控管我們的程式碼。

另外透過自行宣告一個 BackHandledFragment,我們可以於 MainActivity 中控管每個 Fragment 的 onBackPressed 所執行的動作。

《實作方法》

以下透過片段程式碼的方式,說明如何利用 Interface 於 MainActivity 中有效控管 Fragment 與 onBackPressed。

BackHandledFragment.java

宣告一個自訂虛擬類別 BackHandledFragment,在裡面定義一個自訂介面 BackHandlerInterface,並宣告一個實作(implements)這個介面的物件 backHandlerInterface,透過這個物件,我們可以控管所有有繼承 BackHandledFragment 類別的 Fragment.

MainActivity.java

在這個例子中,我們首先自行定義了四個 Fragment,分別為 Fragment01Fragment02Fragment03Fragment04,這四個 Fragment 皆繼承了 BackHandledFragment 這個虛擬類別,因此每個 Fragment 皆必須覆寫 getTagText() 以及 onBackPressedFlag() 這兩個方法,從這邊我們可以透過 onBackPressedFlag() 這個方法回傳 true 或 false,控管我們的 onBackPressed 動作

另外在這四個 Fragment 中,我們皆在其中定義了一個名稱為 CallbackInterface 的介面,透過在這個介面中建構所需的方法,我們可以在建構好方法框架後,於 MainActivity 中實作並重新定義於介面中建構好的方法,藉此達到控管 Fragment 的目的。

Fragment01.java

我們自訂了一個繼承 BackHandledFragment 的 Fragment 類別(Fragment01),並在其中宣告了名為 CallbackInterface 的介面,此介面包含了一個定義好的方法架構叫做 updateContentView_By_Fragment01(ViewStatus_Fragment01 status),這個方法架構目前內容是空的,因此我們在 MainActivity 中透過實作(implements)的方式,在這些尚未定義內容的方法框架裡實作我們需要的動作,也就是切換 Fragment 這個動作。

Fragment02、Fragment03、Fragment04

在此範例中,我們於 MainActivity 中實作了 updateContentView_By_Fragment01()、updateContentView_By_Fragment02()、 updateContentView_By_Fragment03()、updateContentView_By_Fragment04()四種方法, 這四種方法分別是四個 Fragment 中定義的介面(CallbackInterface )所建構的方法框架。

透過這種方式,所有的 Fragment 之間的切換就可以都在 MainActivity 中執行,另外其實當中的 CallbackInterface 介面,亦可以像 BackHandledFragment 一樣獨立出來宣告,如此一來程式碼可以更為清楚與精簡。

賽肥膩膩

我們是低調到不行的肥膩夫妻檔,一路上一邊吵鬧一邊記錄著生活大小事,最近迷上了宅在家追劇,希望能透過文字將所有看過的影集好好紀錄,整理成屬於我們自己的回憶資料庫。

上 / 下一篇文章

臉書留言

一般留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *