Android

[์•ˆ๋“œ๋กœ์ด๋“œ] FragmentManager

minjgziii 2023. 2. 26. 21:53

๐Ÿ“Œ FragmentManager

1) FragmentManager ๋ž€?

  • Activity์™€ Fragment์˜ ์ค‘๊ฐ„์—์„œ ์„œ๋กœ๋ฅผ ์ด์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ

2) FragmentManager ์˜ ์—ญํ• 

๐Ÿ”ป fragment transaction

  • fragment ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ต์ฒด ๋“ฑ์˜ ์ž‘์—… ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ , ํ–‰ํ•ด์ง„ transaction์˜ ์ƒํƒœ๋ฅผ fragment ๋ฐฑ์Šคํƒ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

๐Ÿ”ป Activity์™€์˜ ํ†ต์‹ 

  • ๋‹จ์ผ fragment์— ๋Œ€ํ•ด ์„ธ๋ถ€์ ์ธ ์ž‘์—… ๊ฐ€๋Šฅ(fragment ๋‚ด์˜ ๊ตฌ์„ฑ ์š”์†Œ๋“ค ํ•˜๋‚˜ํ•˜๋‚˜์— ์ ‘๊ธ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ)
  • Activity์—์„œ ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, fragment์—์„œ ์ ์ ˆํ•œ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

3) Fragment ์—์„œ ์ ‘๊ทผ

  • ํ”„๋ž˜๊ทธ๋จผํŠธ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋ž˜๊ทธ๋จผํŠธ ๋‚ด์—์„œ
    โ–ถ๏ธ ์ž์‹ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” FragmentManager์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
    getChildFragmentManager() ์‚ฌ์šฉ
    โ–ถ๏ธ ์ž์‹ ํ”„๋ž˜๊ทธ๋จผํŠธ์—์„œ ๋ถ€๋ชจ์˜ FragmentManager์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”
    getParentFragmentManager() ์‚ฌ์šฉ

โ–ถ๏ธ ์™ผ์ชฝ Example1์˜ host fragment๋Š” 2๊ฐœ์˜ ์ž์‹ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๋‹ด๊ณ  ์žˆ๊ณ ,
โ–ถ๏ธ ์˜ค๋ฅธ์ชฝ Example2์˜ host fragment๋Š” 1๊ฐœ์˜ ์ž์‹ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.( ์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ”„๋ž˜๊ทธ๋จผํŠธ ๋‚ด์—์„œ viewpager2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ)


๐Ÿ“Œ ๊ฐ ํ˜ธ์ŠคํŠธ๋Š” ์ž์‹ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” FragmentManager์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์—ฌ๊ธฐ์— ์ ‘๊ทผํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๊ด€๋ฆฌ(์กฐ์ž‘)ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ–ถ๏ธ ๊ฐ€์žฅ ๋ฐ”๊นฅ์— ์œ„์น˜ํ•˜๋Š” Host Activity(Fragment Activity)๋Š” ์ž์‹ ํ”„๋ž˜๊ทธ๋จผํŠธ์ธ Home๊ณผ Profile ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด supportFragmentManager๋กœ fragmentManager์— ์ ‘๊ทผ
โ–ถ๏ธ Home ๋˜๋Š” Profile ํ”„๋ž˜๊ทธ๋จผํŠธ์ธ Host Fragment๋Š” ์ž์‹ ํ”„๋ž˜๊ทธ๋จผํŠธ(Child Fragment(s))๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด childFragmentManager ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
โ–ถ๏ธ ์ž์‹ ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” FragmentManager์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” parentFragmentManager ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ

FragmentManager๋ฅผ ๋ถ€๋ฅด๋Š” ๋ฉ”์„œ๋“œ๋Š”
1) ํ˜„์žฌ ์ด๊ฒƒ์„ ๋ถ€๋ฅด๋Š” ์œ„์น˜๊ฐ€ ์–ด๋””์ธ์ง€ : Activity์ธ์ง€ Fragment์ธ์ง€ ๋“ฑ
2) ์–ด๋–ค FragmentManager๋ฅผ ๋ถ€๋ฅด๋Š”์ง€ : ์ž์‹์ธ์ง€ ๋ถ€๋ชจ์ธ์ง€
์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

์ฐธ๊ณ  ์‚ฌ์ดํŠธ : https://velog.io/@ejjjang0414/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Fragment-manager

 

[์•ˆ๋“œ๋กœ์ด๋“œ] FragmentManager?

์•ฑ ๊ฐœ๋ฐœ์‹œ ๊ฑฐ์˜ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•˜๋Š” FragmentManager ๊ฐ€ ๋ฌด์Šจ ์ผ์„ ํ•˜๋Š”์ง€, ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค.

velog.io