Activity 上如果有很多的功能(例如系統的設定...),畫面的就會變的很長,或是轉跳好幾個Activity,要回上一頁也是一個一個的轉跳回去,有點麻煩,這是可以把功能分到幾個 Fragments 來重新設計頁面,讓app的介面簡單好用許多。
**Fragments **
Fragments 的UI 設計基本 和 Activity 差不多,Fragments有自己的生命週期,但不行跟Activity一樣獨立存生, 必需有Activity 或 另一個 Fragments 相依管理。
step1 匯入元件庫
build.gradle (APP)
….
dependencies {
...
implementation "androidx.fragment:fragment-ktx:1.3.6"
...
}
step 2 建立Fragments
class KotlinFragment : Fragment(R.layout.fragment_kotlin)
class AndroidFragment : Fragment(R.layout.fragment_kotlin)
step 3 在activity 的 xml 和 activity 加入 Fragments 物件
xml
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
activity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_day14)
if(savedInstanceState == null) {
supportFragmentManager.commit {
setReorderingAllowed(true)
add<KotlinFragment>(R.id.fragment_container_view)
...
}
}
}
Step 4 使用 FragmentManager 來切換 Fragment
在activity 的按鍵事件內宣告
//使用supportFragmentManager 的commit
supportFragmentManager.commit {
//把現有的fragment id 用新的fragmet 換掉
replace<AndroidFragment>(R.id.fragment_container_view)
setReorderingAllowed(true)
addToBackStack(null) // name can be null
}
執行結果:
生命週期的結果:
https://developer.android.com/guide/fragments/