프로그래밍/안드로이드

Android Fragment 다루기 - 3. Fragement 동적 제어하기

파머스오 2017. 8. 1. 08:27
반응형

 

안녕하세요. 오늘은 지난 포스팅에 이어서, fragment를 동적으로 제어하는 방법에 대해서 알아보도록 하겠습니다. 프래그먼트를 동적으로 제어함을써, 화려한(?) UI를 구사할 수 있는 점이 프래그먼트를 사용하는 큰 목적 중 하나 입니다.

 

 

이전에 만들어 놓은 예제에 이어서, 하단에 버튼을 하나 만들고, 이 버튼을 누르면 프래그먼트가 바뀌는 예제를 만드려고 합니다.

 

기존에 하던 방식과 동일하게 fragmentC를 생성해줍니다. 구분을 위해 다른 색상으로 만들어줍니다.

 

이제 버튼을 추가 합니다.

 

버튼에 대한 이벤트를 추가 시켜줍니다.

 

이제 본격적으로, 현재의 fragment가 어떤 상태인지 알려주기 위해 isFragmentB라는 변수를 하나 생성해줍니다.

 

버튼이 눌리면, 현재의 프래그먼트가 어떤 것인지를 판단한다음 교체해주도록 합니다.

 

 

일전엔 간단히 넘어간 프래그먼트 메니져와, 프래그먼트 트랜잭션에 대해 살펴 보도록 하겠습니다.

 

이전 포스팅에서는 add()를 사용했는데, 오늘은 replace()를 사용했습니다. 오늘도 add()를 사용해도 상관은 없습니다.

 

add()는 실행이후에도 이전의 프래그먼트가 여전히 active인 상태로 남아있게됩니다. 화면에서만 사라지는 형태입니다.

 

반면 replace()를 사용하게되면, 이전의 프래그먼트가 destroy됩니다.

 

이전 프래그먼트가 굳이 active 상태를 유지할 필요가 없다면 replace()를 사용하여 리소스 사용을 줄여주는게 맞는 것 같습니다.

 

 

프래그먼트 생명 주기로 살펴보면 아래 그림과 같은 차이를 보입니다.

 

위 예제에서는 현재 Back 버튼에 대한 이벤트 처리가 안되어있습니다.

 

즉, Back 버튼을 누르면 이전 프래그먼트로 돌아가게되는데, 변수 bisFragmentB는 변경이 안되어서 다소 이상한 모습을 보입니다.

 

 

아래와 같이 Back 버튼에 대한 이벤트를 추가하도록하겠습니다. 프래그먼트가 3개 이상일때는 사용하기 안 좋은 방식이나, 다음에 다루기로 하겠습니다.

 

 

반응형