能重複使用的Fragment
在第一章 我們定義程式都環繞在Activity之中,而每個Activity都搭配一個XML介面。
如果有三個頁面都需要相同的編輯畫面或是提示,難道要寫3遍嗎?!
Fragment的生命週期
可以參考一下,但別看得太入迷。(哈哈,這是跟我自己說的)
畢竟動手做才是最重要的。
建立Fragment
使用視覺化的方式建立Fragment。
滑鼠右鍵點擊 java -> New -> Fragment -> Fragment(Blank)
修改Fragment Name 為 ??? (???在此例是"TimeFragment")
取消勾選 Include fragment factory methods?
取消勾選 Include interface callbacks?
Source Language 當然是選 Kotlin
點選Finish
取消勾選主要是因為那兩項Include屬於比較進階一點的功能,
對於初學理解會是個蠻大的阻礙。
(當然你覺得你學習能力夠的可以去勾選,但初學還是別心急先求穩)
點選Finsh後自動生成
fragment_time.xml
TimeFragment.kt
修改fragment_time.xml
原始長這樣
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.savesomthingdemo.TimeFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
將原本的FrameLayout修改成ContrainLayout,並將畫面替換成一個時鐘和按鈕
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.savesomthingdemo.TimeFragment">
<TimePicker
android:id="@+id/timePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnSaveTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="儲存"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/timePicker" />
</android.support.constraint.ConstraintLayout>
建立Fragment的容器(Container)
之前做的動作都是設定Fragment的外觀行為,
但別忘了fragment是用來填充Activity的物件。
這步驟決定你是否能在Activity執行時,能否正常的動態新增.替換.刪除Fragment。