[ANDROID] Fragment ๊ธฐ์ดˆ

Fragment๋ž€?


ํ”„๋ ˆ๊ทธ๋จผํŠธ๋Š” FragmentActivity ๋‚ด์˜ ์–ด๋–ค ๋™์ž‘ ๋˜๋Š” ์‚ฌ์šฉ์ž UI์˜ ์ผ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ๊ทธ๋จผํŠธ๋Š” ์ž์ฒด์ ์œผ๋กœ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ž์ฒด์ ์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ , ์•กํ‹ฐ๋น„ํ‹ฐ ์‹คํ–‰ ์ค‘์— ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋ ˆ๊ทธ๋จผํŠธ๋Š” ํ•ญ์ƒ ์•กํ‹ฐ๋น„ํ‹ฐ ๋‚ด๋ถ€์— ์กด์žฌํ•ด์•ผํ•˜๋ฉฐ, ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ์— ์ง์ ‘์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ผ์‹œ์ •์ง€ ์ƒํƒœ์— ๋น ์ง€๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ํ”„๋ ˆ๊ทธ๋จผํŠธ๋„ ์ผ์‹œ์ค‘์ง€ ์ƒํƒœ์— ๋น ์ง€๋ฉฐ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์†Œ๋ฉธ๋˜๋Š” ๊ฒฝ์šฐ ์†ํ•œ ํ”„๋ ˆ๊ทธ๋จผํŠธ๋“ค๋„ ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ํ”„๋ ˆ๊ทธ๋จผํŠธ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฑ ์Šคํƒ์— ์ถ”๊ฐ€๋˜์–ด ๋ณด์กด,๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋ ˆ๊ทธ๋จผํŠธ๋ฅผ ์•กํ‹ฐ๋น„ํ‹ฐ ๋ ˆ์ด์•„์›ƒ์— ์ถ”๊ฐ€ํ•˜๋ฉด, ํ•ด๋‹น ํ”„๋ ˆ๊ทธ๋จผํŠธ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ViewGroup์— ๋“ค์–ด๊ฐ€๊ณ  ์ž์ฒด์ ์ธ ๋ทฐ ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. 

 

Fragment ๋””์ž์ธ ์ฒ ํ•™ 


ํ”„๋ ˆ๊ทธ๋จผํŠธ์˜ ์žฌ์‚ฌ์šฉ

๊ฐ ํ”„๋ ˆ๊ทธ๋จผํŠธ๋Š” ๋ชจ๋“ˆ์‹์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋””์ž์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๊ฐ ํ”„๋ ˆ๊ทธ๋จผํŠธ๊ฐ€ ์ž์ฒด์ ์ธ ์ˆ˜๋ช… ์ฃผ๊ธฐ ์ฝœ๋ฐฑ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ๊ณผ ๋™์ž‘์„ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ํ”„๋ ˆ๊ทธ๋จผํŠธ๋ฅผ ์—ฌ๋Ÿฌ ์•กํ‹ฐ๋น„ํ‹ฐ์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์—ผ๋‘์— ๋‘๊ณ  ๋””์ž์ธํ•˜๊ณ  ํ•˜๋‚˜์˜ ํ”„๋ ˆ๊ทธ๋จผํŠธ๋ฅผ ๋‹ค๋ฅธ ํ”„๋ ˆ๊ทธ๋จผํŠธ์—์„œ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์‚ผ๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ํŠนํžˆ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๋ชจ๋“ˆ์‹ ํ”„๋ ˆ๊ทธ๋จผํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋ ˆ๊ทธ๋จผํŠธ์˜ ๋ฐฐ์น˜๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ™”๋ฉด ํฌ๊ธฐ์— ๋งž์ถฐ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

 

Fragment์˜ ์ƒ๋ช…์ฃผ๊ธฐ


Fragment ์ƒ๋ช… ์ฃผ๊ธฐ

 

onAttach() 

  • ํ”„๋ ˆ๊ทธ๋จผํŠธ๊ฐ€ Activity์— attach๋  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • ์ด ๋ฉ”์„œ๋“œ์—์„œ ๋ถ€๋ชจ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

 

onCreate() 

  • ํ”„๋ ˆ๊ทธ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‹œ์Šคํ…œ์—์„œ ์ด๊ฒƒ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • ์ดˆ๊ธฐํ™”ํ•ด์•ผํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋“ค์„ ์—ฌ๊ธฐ์„œ ์ดˆ๊ธฐํ™” ํ•ด์ค๋‹ˆ๋‹ค.

 

onCreateView() 

  • ํ”„๋ ˆ๊ทธ๋จผํŠธ๊ฐ€ UI๋ฅผ ๊ทธ๋ฆด ๋•Œ ์ด๊ฒƒ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  • Layout์„ Inflateํ•˜๋Š” ๊ณณ์ด๋ฉฐ, view ๊ฐ์ฒด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

onActivityCreated() 

  • Activity์—์„œ onCreate()๊ฐ€ ๋ฐ˜ํ™˜์ด ๋œ ํ›„, ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
  • ๋ทฐ๊ฐ€ ๋ชจ๋‘ ์ƒ์„ฑ๋œ ์ƒํƒœ๋กœ, ๋ทฐ๋ฅผ ๋ณ€๊ฒ…ํ•˜๋Š” ์ž‘์—…์ด ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

 

onStart() 

  • ์‚ฌ์šฉ์ž์—๊ฒŒ Fragment๋ฅผ ๋ณด์ด๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.
  • Activity๋Š” ์ด ๋‹จ๊ฒŒ์—์„œ started ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

onResume()

  • ์œ ์ €์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

 

onPause() 

  • ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋ ˆ๊ทธ๋จผํŠธ๋ฅผ ๋– ๋‚  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๊ธฐ์„œ ์ง€์†๋˜์–ด์•ผ ํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

onStop()

  • ๋‹ค๋ฅธ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ํ™”๋ฉด์„ ์™„์ „ํžˆ ๊ฐ€๋ฆฌ๊ฒŒ ๋˜๋ฉด, onStop()์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ํ•ด๋‹น ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์‹œ ๋ณต์›๋  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

onDestroyView() 

  • ํ”„๋ ˆ๊ทธ๋จผํŠธ์™€ ๊ด€๋ จ๋œ View๊ฐ€ ์ œ๊ฑฐ๋˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

 

onDestroy() 

  • ํ”„๋ ˆ๊ทธ๋จผํŠธ๋Š” ์ƒ์„ฑ๋  ๋•Œ, onCreate() -> onCreateView๋กœ ํ˜ธ์ถœํ•˜์˜€์ง€๋งŒ, Destroyํ•  ๋•Œ๋Š” ๋ฐ˜๋Œ€๋กœ onDestoryView์—์„œ View๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , onDestroy()๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

onDetach() 

  • ํ”„๋ ˆ๊ทธ๋จผํŠธ๊ฐ€ ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ detach๋  ๋•Œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

Reference

https://developer.android.com/guide/components/fragments?hl=ko

 

ํ”„๋ž˜๊ทธ๋จผํŠธ  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section…

developer.android.com