프래그먼트
프래그먼트는 태블릿과 같은 대화면에서 효율적으로 화면을 구성하기 위해 생긴 구성요소 이다.
액티비티를 분할하여 화면의 한부분을 정의하며 액티비티와 같이 레이아웃, 동작 처리, 생명주기를 가지는 독립적인 모듈이다. 다른 액티비티에서도 사용 할 수 있어 재사용성이 뛰어나며 액티비티 실행 중에 추가, 제거가 가능하다.
프레그먼트는 액티비티의 일부분에만 배치되는 화면 및 동작을 조작하기 위한 객체입니다. 안드로이드 3.0(허니콤)에서 화면이 비교적 큰 태블릿의 등장으로 작은 단위의 화면의 생명주기 관리할 필요가 있어 추가되었습니다. 프레그먼트 매니저를 통해서 여러개의 프레그먼트를 조작할 수 있습니다. 레이아웃 xml 파일에서 다른 뷰들과 함께 배치될 수 있습니다.
Fragment를 생성 시 기본 생성자만 사용하길 추천하는 이유?
안드로이드 OS에 의해서 프래그먼트가 복원될 때는 프래그먼트의 기본 생성자를 호출하기 때문에 오버로딩된 생성자의 호출이 보장되지 않는다.프래그먼트를 생성 시 생성자를 오버로딩 하지 않고 생성 시 파라미터를 Bundle에 담아 setArgument() 함수를 호출하는 방식을 사용한다. (액티비티 - 프래그먼트)
*Bundle 키 값 구조를 갖는 HashMap 형태 클래스이다. (값을 전달하는 인텐트하고도 유사하다고 이해할 수 도 있다. )
프래그먼트 끼리 통신을 하는 방법
서로 다른 fragment들 끼리는 직접적으로 정보를 주고 받을 수 없다. Fragment끼리의 통신은 반드시 host activity(프래그먼트들이 바인딩되어 있는 activity)를 거쳐서 이루어져야 한다.
- viewmodel 클래스를 이용하여 통신하는 방법
- interface 를 만들고 콜백 함수를 만드는 방법
프래그먼트의 생명주기
액티비티에 상태에 맞추어서 프래그먼트 매니저는 생명주기 함수를 콜한다.
댓글