測試一
準備以下的程式碼
supportFragmentManager.commit { setReorderingAllowed(true) add<TestFragment1>( R.id.fragment_container_view ) } binding.replaceBtn.setOnClickListener { supportFragmentManager.commit { setReorderingAllowed(true) replace<TestFragment2>( R.id.fragment_container_view ) addToBackStack("stack") } } binding.backBtn.setOnClickListener { supportFragmentManager.popBackStack() }
測試方式
a. App啟動,只有TestFragment1建立
TestFragment1 onViewCreated
TestFragment1 onResume
b. 按下replaceBtn後
TestFragment1 onPause
TestFragment1 onStop
TestFragment2 onViewCreated
TestFragment2 onResume
c. 再按一次replaceBtn後
TestFragment2 onPause
TestFragment2 onStop
TestFragment2 onViewCreated
TestFragment2 onResume
d. 按backBtn後
TestFragment2 onPause
TestFragment2 onStop
TestFragment2 onViewCreated
TestFragment2 onDestroy 按下back才會onDestroy
TestFragment2 onResume
e. 再按一次backBtn後
TestFragment2 onPause
TestFragment2 onStop
TestFragment1 onViewCreated
TestFragment2 onDestroy 按下back才會onDestroy
TestFragment1 onResume
測試二
supportFragmentManager.commit { setReorderingAllowed(true) add<TestFragment1>( R.id.fragment_container_view ) } binding.replaceBtn.setOnClickListener { supportFragmentManager.commit { setReorderingAllowed(true) replace<TestFragment2>( R.id.fragment_container_view ) } } binding.backBtn.setOnClickListener { supportFragmentManager.popBackStack() }
測試方式
a. App啟動,只有TestFragment1建立
TestFragment1 onViewCreated
TestFragment1 onResume
b. 按下replaceBtn後
TestFragment1 onPause
TestFragment1 onStop
TestFragment2 onViewCreated
TestFragment1 onDestroy 比測試一多了這行
TestFragment2 onResume
c. 再按一次replaceBtn後
TestFragment2 onPause
TestFragment2 onStop
TestFragment2 onViewCreated
TestFragment2 onDestroy 比測試一多了這行
TestFragment2 onResume
按下backBtn,沒反應,因為沒添加addToBackStack
測試三
supportFragmentManager.commit { setReorderingAllowed(true) add<TestFragment1>( R.id.fragment_container_view ) } binding.replaceBtn.setOnClickListener { supportFragmentManager.commit { setReorderingAllowed(true) replace<TestFragment2>( R.id.fragment_container_view ) } } binding.backBtn.setOnClickListener { supportFragmentManager.popBackStack() } binding.addBtn.setOnClickListener { supportFragmentManager.commit { setReorderingAllowed(true) add<TestFragment1>( R.id.fragment_container_view ) addToBackStack(null) } }
a. App啟動,只有TestFragment1建立
TestFragment1 onViewCreated
TestFragment1 onResume
b. 按下addBtn後
TestFragment1 onViewCreated
TestFragment1 onResume
b. 按下replaceBtn後
TestFragment1 onPause
TestFragment1 onStop
TestFragment1 onPause
TestFragment1 onStop
TestFragment2 onViewCreated
TestFragment1 onDestroy
TestFragment2 onResume
c. 按一次backBtn後
TestFragment1 onDestroy
相關文章
Android Fragment建立、更換、尋找、Back Stack | Android Fragment 自定義constructor |
1. 使用XML在Activity與Fragment連接 2. 使用程式方式在Activity與Fragment連接 3. 將已新增的Fragment更換 4. 尋找已建立的Fragment 5. Fragment對應的FragmentManager 6. Back Stack使用 | 1. 重寫FragmentFactory 2. 建立Fragment 3. 在Activity中使用 |
Android Fragment show、hide、attach、detach用法 | Android Fragment Transitions動畫效果 |
1. 範例程式 2. Fragment show與hide是什麼呢? 3. Fragment attach與detach是什麼呢? | 1. 範例程式 2. 功能介紹 |
Android Fragment shared element transitions動畫效果 | Android Fragment lifecycle |
1. 範例程式 2. 功能介紹 | 1. 簡略 2. 測試搭配setMaxLifecycle的生命週期 |
Android Fragment通訊 | |
1. 簡要 2. 使用View Model共享數據 3. 使用 Fragment Result API獲取結果 |