티스토리 뷰
0.서론
화면을 구성할 때는 보통 각각의 화면을 액티비티로 만든 후 액티비티끼리 전환시킵니다.
그 과정에서는 intent를 이용하여 액티비티끼리 전환을 하는 방법이 있습니다.
intent를 이용하여 데이터를 다른 액티비티로 전달할 수 도 있으며, 데이터를 받을 수 도 있습니다.
하지만 intent를 이용하여 액티비티끼리 전환을 하게 되면
만약에 A라는 액티비티에서 B,C,D,E 액티비티로 전환을 하게되는데, 여기서 B,C,D,E라는 액티비티가
단순히 이름만 바뀌는 경우, 아님 그림만 바뀌는 경우라면 메모리를 많이 잡아 먹을 것입니다.
하지만 Fragment(프래그먼트)는 한 화면에 여러개의 액티비티를 띄울 수 있으며, 메모리도 적게 사용할 것입니다.
그리하여 프래그먼트의 사용 목적으로는 다음과 같이 정리할 수 있습니다.
1. 분활된 화면들을 독립적으로 구성하기 위해 사용.
2. 분활된 화면들의 상태를 관리하기 위해 사용.
그럼 프래그먼트가 어떤것이고, 어떻게 사용하는지에 대해서 알려드리겠습니다.
1. 화면구성
여기서 FrameLayout안에 <fragment>를 넣어서 사용해도 되지만 여기서는 FrameLayout으로 공간을 만들어 이안에 여러개의 액티비티를 넣어 보도록 하겠습니다.
다음은 FrameLayout에 띄어줄 Fragment를 만들어 보도록 하겠습니다.
res -> layout -> fragment_main.xml 파일을 하나 만들어 줍니다.
2. JavaCode 작성
MainFragment라는 java파일을 생성해줍니다.
여기서 superclass는 Fragment(android.support.v4.app.Fragment)를 넣어준 후 자바파일을 생성해줍니다.
다음은 MainFragment파일에 onCreateView라는 메소드를 오버라이드 해줍니다.
인플레이션과정을 한것을 ViewGroup으로 묶어서 rootView라는 변수를 가진 ViewGroup을 만들어 줍니다.
다음은 우리가 올리고자하는 액티비티 즉 매인액티비티를 참조하여 그 위에 Fragment를 올릴 것입니다.
그리하여 메인 액티비티를 참조하기위해 onAttach와 onDetach를 이용할 것입니다.
다음은 메인액티비티로 넘어가서 버튼을 메인이라는 버튼을 누르면 MainFragment를 띄우도록 하겠습니다.
여기서 getSupportFragmentManager()라는 메소드를 부른 후 프래그먼트를 변경하기 위한 트랜잭션을 시작합니다.
그다음 .replace는 A라는 프래그먼트가 띄워져 있으면 그 프래그먼트를 지우고, 현재 부른 프래그먼트로 전환하게 해주는것 입니다.
그다음은 꼭 commit으로 마무리를 지어줍니다.
여기서 R.id.container는 아까 메인레이아웃에서 만든 Framelayout을 말합니다.
이와 같이 작성후 실행하게 되면 메인 아이콘을 누를 시 메인프래그먼트화면이 띄워지게됩니다.