本程式碼研究室是 Android Kotlin 基礎課程的一部分。使用程式碼研究室逐步完成程式碼課程後,您將能充分發揮本課程的潛能。所有課程程式碼研究室清單均列於 Android Kotlin 基礎程式碼研究室到達網頁。
在這個程式碼研究室中,您將瞭解片段,並在名為「AndroidTrivia」的入門應用程式中建立片段。在下一次的程式碼研究室中,您將進一步瞭解導航功能,並進一步使用 AndroidTrivia 應用程式。
須知事項
- Kotlin 基本概念
- 如何在 Kotlin 中建立基本 Android 應用程式
- 版面配置的使用方式
課程內容
- 如何在應用程式中加入靜態的片段
執行步驟
- 在活動中建立片段。
在這堂課介紹的三個程式碼研究室中,您開發了一款稱為 AndroidTrivia 的應用程式。已完成的應用程式是一種遊戲,使用者可透過這個方式回答三個關於 Android 編碼的知識問答問題。只要正確回答這三項問題,就能贏得比賽,並分享結果。
AndroidTrivia 應用程式說明導航模式和控制項。此應用程式包含數個元件:
- 使用者啟動遊戲時,在畫面左下方的螢幕截圖畫面中,使用者啟動了遊戲。
- 使用者如在遊戲中間顯示問題 (如上方中間所示),使用者會玩遊戲並提交答案。
- 導覽匣 (如右側所示) 會從應用程式側邊滑出,其中包含包含標頭的選單。導覽匣圖示
開啟導覽匣。導覽匣選單包含「關於」頁面的連結和遊戲規則的連結。
應用程式頂端會顯示稱為應用程式列的彩色檢視,又稱為動作列。
在本程式碼研究室中,您從入門應用程式著手,在完成 Trivia 應用程式時,可以取得所需的範本程式碼和片段類別。
- 下載 AndroidTrivia-Starter Android Studio 專案。
- 在 Android Studio 中開啟專案並執行應用程式。應用程式開啟後,除了顯示應用程式名稱和空白畫面之外,並不會執行任何操作。
- 在 Android Studio 專案窗格中,開啟 Project: Android 視圖來探索專案檔案。開啟 app > java 資料夾以查看
MainActivity
類別和片段類別。 - 開啟 res >Layout 資料夾,然後按兩下 activity_main.xml。
activity_main.xml
檔案會顯示在版面配置編輯器中。 - 按一下 [設計] 分頁標籤。
activity_main.xml
檔案的「元件樹狀結構」會將根版面配置顯示為垂直LinearLayout
。
在垂直線性版面配置中,版面配置中的所有子項檢視都會垂直對齊。
片段代表活動中的特定行為或使用者介面 (UI),您可以將多個片段結合為單一活動,建立多窗格使用者介面,並在多個活動中重複使用單一片段。
可以將片段視為活動的模組化區塊,就像「其他活動」一樣,也可以用於其他活動:
- 片段具有專屬的生命週期,並會接收其本身的輸入事件。
- 您可以在活動進行期間新增或移除片段。
- 片段是由 Kotlin 類別定義。
- XML 版面配置檔案會定義片段的 UI。
AndroidTrivia 應用程式有主要活動,其中有數個片段。已為您定義大部分片段及其版面配置檔案。在這項工作中,您會建立片段並將片段新增至應用程式的主要活動。
步驟 1:新增片段類別
在這個步驟中,您會建立一個空白的 TitleFragment
類別。首先,為新片段建立 Kotlin 類別:
- 在 Android Studio 中,按一下「專案」窗格內的任何一處,即可將焦點移回專案檔案。例如,按一下「com.example.android.navigation」資料夾。
- 選取 [File > New > Fragment > Fragment (Empty)]。
- 針對片段名稱,請使用 TitleFragment。清除所有核取方塊,包括「Create Layout XML (建立版面配置 XML)」、「納入片段的片段方法」和「包括介面回呼」。
- 按一下 [完成]。
- 如果
TitleFragment.kt
片段檔案尚未開啟,請開啟該檔案。其中包含onCreateView()
方法,也就是片段片段中所使用的方法之一。 - 在
onCreateView()
中移除return TextView(activity).apply
部分,包括開頭為setText
的行。onCreateView()
函式僅含下列程式碼:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
}
建立繫結物件
系統現在將停止編譯片段。如要讓片段經過編譯,您必須建立繫結物件並強化片段檢視 (相當於使用 setContentView()
進行活動)。
- 在
TitleFragment.kt
的onCreateView()
方法中建立binding
變數 (val binding
)。 - 為了加強片段的視圖,請呼叫片段
Binding
物件的DataBindingUtil.inflate()
方法,也就是FragmentTitleBinding
。
將四個參數傳入方法中:
inflater
,這是用來為繫結版面配置加載的LayoutInflater
。- 要展開的版面配置的 XML 版面配置資源。請使用已為您定義的其中一個版面配置
R.layout.fragment_title
。 container
(ViewGroup
) 的上層(此為選用參數)。false
的值為attachToParent
。
- 將
DataBindingUtil.inflate
傳回的繫結指派給binding
變數。 - 從包含原始檢視畫面的方法傳回
binding.root
。您的onCreateView()
方法現在如下所示:
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val binding = DataBindingUtil.inflate<FragmentTitleBinding>(inflater,
R.layout.fragment_title,container,false)
return binding.root
}
步驟 2:將新片段加入主要版面配置檔案
在這個步驟中,您會將 TitleFragment
加到應用程式的 activity_main.xml
版面配置檔案。
- 開啟 res >Layout > activity_main.xml,然後按一下 [Text] 分頁標籤,查看版面配置的 XML 程式碼。
- 在現有的
LinearLayout
元素內部新增fragment
元素。 - 將片段 ID 設為
titleFragment
。 - 將片段名稱設為片段類別的完整路徑,在本例中為
com.example.android.navigation.TitleFragment
。 - 將版面配置寬度和高度設為
match_parent
。
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/titleFragment"
android:name="com.example.android.navigation.TitleFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
</layout>
- 執行應用程式。已將片段新增至主畫面。
Android Studio 專案:AndroidTriviaFragment
在這個程式碼研究室中,您將片段新增至 AndroidTrivia 應用程式,在本課程中,您將在接下來兩個程式碼研究室中繼續學習。
- 片段是活動的模組性部分,
- 片段具有專屬的生命週期,並會接收其本身的輸入事件。
- 在 XML 版面配置檔案中,使用
<fragment>
標記定義片段的版面配置。 - 在
onCreateView()
中讓片段的版面配置展開。 - 您可以在活動進行期間新增或移除片段。
Udacity 課程:
Android 開發人員說明文件:
這個部分會列出在代碼研究室中,受老師主導的課程作業的可能學生作業。由老師自行決定要執行下列動作:
- 視需要指派家庭作業。
- 告知學生如何提交家庭作業。
- 批改家庭作業。
老師可視需要使用這些建議,並視情況指派其他合適的家庭作業。
如果您是自行操作本程式碼研究室,歡迎透過這些家庭作業來測試自己的知識。
回答這些問題
第 1 題
片段和活動之間有何差異?請選取所有正確的敘述。
- 建立片段時,您需在
onCreateView()
方法中展開版面配置。建立活動時,您可以將onCreate()
中的版面配置展開。 - 活動有各自的版面配置,但片段不能有自己的版面配置。
- 一個活動有各自的生命週期,但一個片段沒有。
- 為片段或活動套用版面配置時,您可以將版面配置參照為
R.layout.
layoutname
。
第 2 題
以下關於片段的敘述何者正確?請選取所有適用選項。
- 您可以在多個活動中使用片段。
- 一個活動可以包含多個片段。
- 在 Kotlin 類別中定義片段後,系統就會自動將片段新增至
activity_main.xml
版面配置檔案。 - 在版面配置中要插入片段的位置,使用
<fragment>
標記來定義地點。
開始下一門課程:
如要瞭解本課程中其他程式碼研究室的連結,請參閱 Android Kotlin 基礎程式碼程式碼到達網頁。