이번 포스팅은 Fragment를 좀 더 유연하게 구축하는 방법에 대하여 알아보도록 하겠습니다.
다양한 화면 크기를 지원하도록 애플리케이션을 설계할 때 다양한 레이아웃 구성에서 Fragment를 다시 사용하여 사용 가능한 화면 공간을 기준으로 사용자 환경을 최적화할 수 있습니다.
예를 들어 핸드셋 기기인 경우 단일 창 사용자 인터페이스에 Fragment를 한 번에 하나씩만 표시하는 것이 적합할 수 있습니다. 반대로, 화면 너비가 큰 태블릿에서는 Fragment를 나란히 설정하여 사용자에게 더 많은 정보를 표시할 수 있습니다.
이 FragmentManager
클래스는 동적 경험(dynamic experience)을 만들기 위해 런타임시 Activity에 Fragment를 추가, 제거 및 대체 할 수있는 메소드를 제공합니다.
Fragment 구현에 관한 자세한 정보는 다음 리소스를 참조하세요.
Runtime 시 Activity에 Fragment 추가
<fragment>
요소를 사용하는 이전 과정의 내용대로 레이아웃 파일의 Activity에 대한 Fragment를 정의하는 대신 Activity Runtime 중 Activity에 Fragment를 추가할 수 있습니다. Activity 사용 기간 중 Fragment를 변경하려는 경우에는 이 과정이 필요합니다.
프래그먼트 추가 또는 삭제와 같은 트랜잭션을 수행하려면 FragmentManager
를 사용하여 기타 Fragment 트랜잭션을 추가, 삭제, 교체, 수행하기 위한 API를 제공하는 FragmentTransaction
를 만들어야 합니다.
Activity에서 Fragment를 삭제하거나 교체할 수 있는 경우 Activity의 onCreate()
메서드 중에 Activity의 초기 Fragment를 추가해야 합니다.
Fragment 작업 시, 특히 런타임에 Fragment를 추가할 때 유념해야 할 중요한 규칙은 Fragment를 삽입할 수 있는 컨테이너 View
를 Activity 레이아웃에 포함해야 하는 것입니다.
이전 과정에 나와 있는 대로 Fragment를 한 번에 하나씩만 표시하는 레이아웃 대신 다음 레이아웃을 사용할 수 있습니다. 한 Fragment 를 다른 Fragment 로 교체할 수 있도록 Activity 레이아웃에는 Fragment 컨테이너 역할을 하는 빈 FrameLayout
이 포함되어 있습니다.
파일 이름은 이전 과정의 레이아웃 파일과 동일하지만, 레이아웃 디렉터리에 large
한정자가 없기 때문에, 이 레이아웃은 기기 화면이 대형보다 작아 두 Fragment 를 동시에 표시할 수 없는 경우에 사용됩니다.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Reference
1. https://developer.android.com/training/basics/fragments/fragment-ui
'Development > Android' 카테고리의 다른 글
[Android] Touch 이벤트 순서 (0) | 2019.09.10 |
---|---|
[Android] Intent Filter (0) | 2019.09.10 |
[Android] App Fragment Test (0) | 2019.09.06 |
[Android] Fragment의 생성 (0) | 2019.09.06 |
[Android] Fragment의 개요 (0) | 2019.09.06 |