๐กFragmentManager & FragmentTransaction์ ์ญํ ์ ์ดํดํ๊ณ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ์ฌ ๊ธฐ๋กํ์์ต๋๋ค.
FragmentManager
ํ๋๊ทธ๋จผํธ ๊ด๋ฆฌ์ | Android Developers
ํ๋๊ทธ๋จผํธ ๊ด๋ฆฌ์ | Android Developers
์ด ํ์ด์ง๋ Cloud Translation API๋ฅผ ํตํด ๋ฒ์ญ๋์์ต๋๋ค. ํ๋๊ทธ๋จผํธ ๊ด๋ฆฌ์ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ์ฐธ๊ณ : Navigation ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ
developer.android.com
- FragmentManager๋ ์ฑ ํ๋๊ทธ๋จผํธ์์ ํ๋๊ทธ๋จผํธ๋ฅผ ์ถ๊ฐ, ์ญ์ , ๊ต์ฒดํ๊ณ ๋ฐฑ ์คํ์ ์ถ๊ฐํ๋ ์์ ์ ์คํํ๋ ํด๋์ค์ ๋๋ค.
- Activity or Fragment์์ ์ก์ธ์ค ํ ์ ์์ผ๋ฉฐ, FragmentActivity ๋ฐ ์๋ธ ํด๋์ค์์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
- getSupportFragmentManager() ๋ฉ์๋๋ก FragmentManager์ ์์ธ์ค ๊ฐ๋ฅํฉ๋๋ค.
์ฃผ์ ์ญํ
- Fragment ์ถ๊ฐ, ์ ๊ฑฐ, ๊ต์ฒด
- BackStack ๊ด๋ฆฌ
- FragmentTransaction
FragmentTransaction
- FragmentManager๋ฅผ ์ฌ์ฉํ์ฌ Fragment๋ฅผ ์ถ๊ฐ, ์ ๊ฑฐ, ๊ต์ฒด ๋ฑ์ ์์
์ ์ํํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ ๊ฐ์ด ์ผ๋ จ์ ์์ ๋ค์ ๋ฌถ์ด ์ฒ๋ฆฌํ๋ ๊ฐ๋ ์ผ๋ก Fragment ๊ด๋ จ ์์ ์ ํ ๋ฒ์ ์ฒ๋ฆฌํ๊ณ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด commitํ ์ ์์ต๋๋ค.
FragmentTransaction | Android Developers
FragmentTransaction | Android Developers
androidx.appsearch.builtintypes.properties
developer.android.com
- FragmentTransaction ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ Fragment Transaction Method ์์ ์ ์งํํ ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ์์ ์ ํ๋ฒ์ ๋ฌถ์ด ํธ๋์ญ์ ๋จ์๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ํ FragmentTransaction์ BackStack์ ์ถ๊ฐํ ์ ์์ด, ์ฌ์ฉ์๊ฐ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ ์ ๋ ์ด์ ์ํ๋ก ๋์๊ฐ ์ ์์ต๋๋ค.
Fragment Transaction Method
- add() : ์๋ก์ด Fragment ์ถ๊ฐ
- replace() : ๊ธฐ์กด์ Fragment ๊ต์ฒด
- remove() : Fragment ์ ๊ฑฐ
- hide() : Fragment๋ฅผ ํ๋ฉด์์ ์จ๊น
- show() : ์จ๊ฒจ์ง Fragment ํ์
- attach() : Fragment๋ฅผ ๋ค์ ํ๋ฉด์ ํ์
- detach() : Fragment๋ฅผ ํ๋ฉด์์ ๋ถ๋ฆฌ
BackStack ๊ด๋ฆฌ
- BackStack์ Fragment ํธ๋์ญ์ ์ ๊ธฐ๋กํ์ฌ, ์ฌ์ฉ์๊ฐ ๋ค๋ก ๋ฒํผ์ ๋๋ ์ ๋ ์ด์ ์ํ๋ก ๋์๊ฐ ์ ์๊ฒ ํ๋ ๊ธฐ๋ฅ์ ๋๋ค.
- addToBackStack() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํธ๋์ญ์ ์ BackStack์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
fragmentTransaction.replace(R.id.fragment_container, newFragment)
fragmentTransaction.addToBackStack(null) // ํธ๋์ญ์
์ BackStack์ ์ถ๊ฐ
fragmentTransaction.commit()
- Fragment ํธ๋์ญ์ ์ ์๋์ ๊ฐ์ด ์ ๋๋ฉ์ด์ ์ ์ถ๊ฐํ์ฌ ์ ํ ํจ๊ณผ๋ฅผ ์ค ์ ์์ต๋๋ค.
fragmentTransaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left)
์ฃผ์์
- ์ํ ์์ค ๋ฐฉ์ง
- commit()์ UI ์ค๋ ๋์์๋ง ํธ์ถํด์ผ ํ๋ฉฐ, ์กํฐ๋นํฐ๊ฐ ์ผ์์ ์ผ๋ก ์ค๋จ๋ ์ํ์์ ํธ์ถํ๋ฉด IllegalStateException์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์ด๋ฌํ ๊ฒฝ์ฐ commitAllowingStateLoss()๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง, ์ํ ์์ค์ด ๋ฐ์ํ ์ ์์ผ๋ ์ ์คํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- UI ์ค๋ ๋์์๋ง ์คํ
- UI๊ฐ ์๋ ์ค๋ ๋์์ Fragment ํธ๋์ญ์ ์ ์คํํ๋ฉด ์ฑ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
supportFragmentManager
- FragmentManager์ ์ธ์คํด์ค๋ก Activity์ ์ง์ ์ถ๊ฐ๋๋ Fragment๋ค์ ๊ด๋ฆฌํฉ๋๋ค.
- Activity์์ Fragment๋ฅผ ์ถ๊ฐ, ๊ต์ฒด, ์ ๊ฑฐํ ๋ ์ฌ์ฉํฉ๋๋ค.
- FragmentTranscation์ ๊ด๋ฆฌํ๋ฉฐ BackStack์ ํตํด ๋ค๋ก ๊ฐ๊ธฐ ๋์ ๋ฑ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
childFragmentManager
- Fragment ๋ด์์ ๋ ๋ค๋ฅธ Fragment๋ฅผ ๊ด๋ฆฌํ ๋ ์ฌ์ฉ๋๋ FragmentManager์ ๋๋ค.
- Fragment ๋ด์ ์์ Fragment๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ด๋ฆฌํด์ผ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- Nested Fragment(์ค์ฒฉ ํ๋๊ทธ๋จผํธ), ViewPager2, ํญ ๋ ์ด์์, ๋ค์ค ๋ ์ด์์์ ๊ฐ์ง Fragment์์ ์์ Fragment๋ฅผ ๊ด๋ฆฌํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ ๋ฆฌ
- FragmentManager๋ Android์์ Fragment์ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๊ณ ํธ๋์ญ์ ์ ์ฒ๋ฆฌํ๋ ๋๊ตฌ์ ๋๋ค.
- Fragment ํธ๋์ญ์ ์ FragmentManager๋ฅผ ์ฌ์ฉํ์ฌ Fragment๋ฅผ ๋์ ์ผ๋ก ์ถ๊ฐ, ์ ๊ฑฐ, ๊ต์ฒดํ๋ ์์ ์ ํธ๋์ญ์ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
- ์ด๋ค์ ํตํด UI ์ ํ์ ๋ ์ ์ฐํ๊ฒ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, BackStack์ ์ฌ์ฉํ๋ฉด ์ด์ ์ํ๋ก ๋์๊ฐ๋ ๋์์ ์ง์ํ ์ ์์ต๋๋ค.