Fragment를 화면에 추가하는 방법 이해하기

2019. 9. 24. 05:21·App/Android

Fragment를 사용하는 목적은 분할된 화면을 독립적으로 사용하기 위해서이다.(Activity를 본떠 만든 것)

Fragment를 만들 때도 액티비티를 만들 때의 과정과 비슷하게 진행한다. 즉 액티비티라는 것이 하나의 XML 레이아웃과 하나의 자바 소스 파일로 동작하는 것처럼 Fragment도 하나의 XML레이아웃과 하나의 자바 소스 파일로 동작하도록 만들게 된다.

하나의 프래그먼트를 만들어 액티비티에 추가할 때 까지의 과정

먼저 프래그먼트를 위한 XML레이아웃을 만든다.

프래그먼트도 부분화면이므로 화면에 뷰들을 배치할 때는 XML레이아웃으로 만들기 때문.

/res/layout폴더 안에 XML레이아웃 파일인 fragment_main.xml을 만들고 화면을 정의한다.

그 다음에는 프래그먼트를 위한 자바 소스를 만든다.

프래그먼트는 Fragment 클래스를 상속하여 만들 수 있다.

 

프래그먼트 클래스에 있는 주요 메소드들
public final Activity getActivity() 
//이 프래그먼트를 포함하는 액티비티를 리턴

public final fragmentManager getFragmentManager() 
//이 프래그먼트를 포함하는 액티비티에서 프래그먼트 객체들과 의사소통하는 프래그먼트 매니저를 리턴

public final fragment getParentFragment() 
//이 프래그먼트를 포함하는 부모가 프래그먼트 일 경우 리턴함. 액티비티면 null을 리턴

publit final int getId()
//이 프래그먼트의 ID를 리턴.

 

프래그먼트를 위한 클래스까지 만들었다면 XML 레이아웃 파일의 내용을 자바 소스 파일과 매칭하는 과정이 필요하다.

프래그먼트에는 setContentView() 메소드가 없기 때문에 인플레이션을 위한 별도의 코드를 사용해야 한다.

XML 레이아웃 파일의 내용을 인플레이션 한 후 클래스에서 사용하도록 하는 코느는 onCreatView() 메소드 안에 들어간다.

 

onCreateView() 메소드는 콜백 메소드로 인플레이션이 필요한 시점에 자동으로 호출된다. 따라서 이 메소드 안에서 인플레이션을 위한 inflate() 메소드를 호출하면 되고 인플레이션 과정이 끝나면 프래그먼트가 하나의 뷰처럼 동작할 수 있는 상태가 된다.

 

프래그먼트는 버튼이나 레이아웃처럼 화면의 일정 공간을 할당받을 수 있다.

따라서 새로 만든 프래그먼트를 메인 액티비티에 추가하는 방법은 뷰와 마찬가지로 XML 레이아웃에 추가하거나 또는 소스 코드에서 new 연산자를 이용해 객체를 만든 후 프래그먼트 매니저로 추가할 수 있다.

...더보기

메인 화면을 위해 만들어진 activity_main.xml 파일에 직접 <fragment> 태그를 이용해 프래그먼트를 추가할 수 도있고, 새로 정의한 프래그먼트 클래스의 인스턴스 객체를 new 연산자를 이용해 만들어준 후 FragmentManager 객체의 add() 메소드를 이용해 액티비티에 추가할 수 도있다.

 

FragmentManager 클래스에 들어있는 주요 메소드들
public abstract FragmentTransaction beginTransaction()
//프래그먼트를 변경하기 위한 트랜젝션을 시작

public abstract Fragment findFragmentByID(int id)
//ID를 이용해 프래그먼트 객체를 찾음

public abstract Fragment findFragmentByTag(String tag)
//태그 정보를 사용해 프래그먼트 객체를 찾음

public abstract boolean executePendingTransactions()
//트랜젝션은 commit() 메소드를 호출하면 실행되지만 비동기 방식으로 실행되므로 즉시 실행하고 싶다면 
//이 메소드를 추가로 호출해야 함

FragmentManager객체는 프래그먼트를 액티비티에 추가하거나 다른 프래그먼트로 바꾸거나 삭제 할 때 주로 사용할 수 있으며 getFragmentManager() 메소드를 호출하면 참조 할 수 있다.

 

프래그먼트 클래스는 보통 Fragment 클래스를 상속하도록 만들지만 프래그먼트 중에는 미리 정의된 몇가지 프래그먼트 클래스들이 있어 그 클래스를 그대로 사용하는 경우도 있다.

그 중에서 DialogFragment는 액티비티 수명주기에 의해 관리되는 대화상자를 보여줄 수 있도록 한다. 이 프래그먼트는 액티비티의 기본 대화상자 대신 사용할 수있다.

ListFragment는 데이터를 리스트뷰 형태로 보여줄 수 있도록하며 ListActivity 클래스와 비슷하다.

'App > Android' 카테고리의 다른 글

[Android] TabLayout  (0) 2019.09.24
[Android] RecyclerView  (0) 2019.08.27
[Android] SharedPreference  (0) 2019.08.27
[Android Studio] Google 로그인 인증 (3)  (0) 2019.08.18
[Android Studio] Google 로그인 인증(2)  (0) 2019.08.18
'App/Android' 카테고리의 다른 글
  • [Android] TabLayout
  • [Android] RecyclerView
  • [Android] SharedPreference
  • [Android Studio] Google 로그인 인증 (3)
soyeon26
soyeon26
  • soyeon26
    개발 일지
    soyeon26
  • 전체
    오늘
    어제
    • 분류 전체보기 (107)
      • Web (22)
        • Web (1)
        • HTTP (0)
      • Language (29)
        • Java Script (3)
        • Type Srcipt (1)
        • Java (25)
      • Front (19)
        • HTML+CSS (4)
        • React (15)
      • Back (41)
        • Spring(Springboot) (9)
        • JSP (21)
        • Database (5)
        • NestJS (6)
      • Devops (6)
        • Docker (1)
        • Git & SVN (5)
      • App (7)
        • Android (7)
      • IT 정보 (3)
  • 블로그 메뉴

    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Next.js
    Next.js 필요성
    csrvsssr
    프론트엔드
    SQL강의 추천
    java의 정석
    React
    서블릿
    csr과ssr의 차이
    강의후기
    김영한
    자바스크립트set
    과학기술인번호 조회
    SSR
    과학기술인 등록
    백엔드
    데이터베이스 강의
    javascript
    중복제거
    강의 후기
    과학기술인등록번호 조회
    인프런
    과학기술인 번호 발급
    Java
    React Next.js
    과학기술인 등록번호 발급
    Spring
    springboot
    sql강의
    스프링부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
soyeon26
Fragment를 화면에 추가하는 방법 이해하기
상단으로

티스토리툴바