Fragment Manager

kldaji·2021년 8월 25일
0

서론

Activity 와 Fragment 는 안드로이드 화면 관리에 가장 핵심적인 클래스이다. 주로 안드로이드 개발자들은 Activity 를 container 로 사용하고 그 안에 여러 fragment 를 추가해 유동적인 화면 전환을 수행한다. 항상 그런 것은 아니지만 이번 주제가 fragment manager 이기 때문에 필자는 하나의 Activity 를 생성하고 그 안에 여러 개의 Fragment 를 할당했다는 가정을 하고자 한다.

본론

하나의 Activity 안에 여러 Fragment 를 관리하기 위해서는 Fragment Manager 라는 것이 필요로 한데 이는 Fragment 추가, 삭제, 변경 등 Transaction 을 수행한다. 즉, Activity 에서 supportFragmentManager 를 통해 Fragment Manager 객체를 가져오고 beginTransaction 메서드를 통해 Transaction 객체 또한 생성하면 본격적으로 Fragment 를 개발자 취향대로 추가, 삭제, 변경을 할 수 있는 것이다.
추가적으로 백스택 기능 또한 Fragment Manager 를 통해 수행될 수 있는데 Fragment 가 추가될 때마다 Stack 에 쌓여 Back Button 을 누르면 이전의 Fragment 로 돌아가는 구조로 구현할 수 있다.

여기서 필자는 Activity 와 Fragment 사이의 View 접근 방법을 함께 작성하고자 한다.
우선 Activity 에서 Fragment 의 View 를 접근하기 위해선 supportFragmentManager 객체에 접근한 뒤 findViewById 를 통해 접근할 수 있다. 이때 주의해야할 점은 Fragment Manager 로 Transcation 을 수행할 때에는 Fragment Instance 전체를 추가, 삭제, 변경 시에 넘겨주면 되는데 View 에 접근할 때에는 Fragment Manager 로 원하는 Fragment 의 참조값을 가져와야한다.

두번째로 Fragment 에서 Activity 의 View 를 접근하기 위해서는 onActivityCreated 콜백함수 내에서 activity 객체에 접근하면 View 에 접근할 수 있다.

결론

이처럼 Activity 와 Fragment 는 정말 밀접하게 관련되어 있다. 물론 Jetpack Navigation 라이브러리를 사용하면 Fragment Manager 를 자동으로 처리해주기 때문에 간단하겠지만 분명 Fragment Manager 를 직접 사용하는 것에 대한 장점이 있을 것이다. (아마도...)

Fragment Manager 와 Activity, Fragment View 접근법에 대해 알게 되었으니 오늘도 필자는 성장했다.


Reference

blog - Fragment Manager
developers - Fragment Manager

profile
다양한 관점에서 다양한 방법으로 문제 해결을 지향하는 안드로이드 개발자 입니다.

0개의 댓글