프레그먼트(Fragments)란?



프레그먼트는 액티비티 내에서의 행위 또는 UI의 일부를 대체할 수 있다. 우리는 여러개의 프레그먼트를 결합해서 하나의 액티비티를 여러개의 판으로 나뉘어진 UI를 구성할 수 있다. 또한, 정의한 프레그먼트를 다른 액티비티에서 재사용할 수도 있다. 프레그먼트는 액티비티의 모듈화된 구역이라고 이해할 수 있다. 따라서 프레그먼트는 독립된 라이프 사이클을 갖고, 자신의 입력 이벤트를 수신하며 액티비티가 살아있는 중간에 추가되거나 삭제(다른 액티비티에서 재사용할 수 있는 일종의 서브 액티비티 같은 것)될 수 있다.


프레그먼트는 항상 액티비티에 속하게되고 생명주기는 바로 그 액티비티의 생명주기에 직접적으로 영향을 받게된다. 예를 들어, 액티비티가 멈출때(Paused) 그 안에 속한 모든 프레그먼트는 멈추게 되고, 닫힐때(Destroyed)도 마찬가지다. 하지만, 액티비티가 동작할 때(Resumed 상태일 때)는 각각의 프레그먼트를 독립적으로 조작(추가/삭제)할 수 있다. 또한 프레그먼트 조작을 수행할 때 액티비티에서 관리하는 백스택(back stack)에 추가할 수도 있다. (액티비티에 속한 각각의 백스택 항목들은 프레그먼트가 조작된 기록이다.) 백스택은 백버튼을 눌렀을 때, 뒤로가기와 같은 프레그먼트 조작을 가능하게 해준다.


프레그먼트를 액티비티 레이아웃의 한 부분으로 추가하면, 이 프레그먼트는 액티비티의 뷰계층에 속해있는 ViewGroup에 존재하게 되고, 뷰 레이아웃을 스스로 정의한다. 프레그먼트를 액티비티 레이아웃에 포함시키는 방법은 두 가지가 있는데, 하나는 액티비티 레이아웃 파일에 프레그먼트를 선언(<fragment>태그)하는 방법이고, 다른 하나는 ViewGroup 객체에 Java Code로 추가하는 것이다. 하지만, 프레그먼트라고 해서 반드시 액티비티 레이아웃의 한 부분이 될 필요는 없다. UI없이 액티비티를 위한 숨은 작업을 하도록 구현할 수 있다.



[원문보기]



Posted by 데브로망스

댓글을 달아 주세요