본문 바로가기
안드로이드, IOS

[안드로이드] 기초 내용 정리 - Fragment의 개략적인 이해

by dwoi 2023. 3. 29.

본 글은 안드로이드라는 운영체제에 대해서 기본적으로 학습하고 개발 환경을 구축하는 내용을 정리하는 글임을 밝힘.

 

목차

     


    안드로이드(운영체제)


    1. Fragment

    1.1. Fragment란?

    화면 안의 또다른 화면
    Fragment

    Fragment : Activity 내에 생성되는, UI 구성을 여러 개의 모듈 단위로 작성할 수 있도록 해주는 기능

    1.2. Fragment 특징

    - Activity에 배치되는 화면(View) 및 동작(Control)의 조각을 뜻함
    - 안드로이드 3.0 부터 지원
    - 하나의 Activity는 여러 개의 Fragment를 가질 수 있음
    - Life cycle을 가지며, Activity의 Life cycle변화에 따라 Life cycle이 변경됨
    - layout xml 코드에서 View와 함께 배치할 수 있음
    - 다른 Activity에서 동일한 Fragment class를 이용할 수 있음
    - 프래그먼트 간 데이터를 주고 받을 수 없음

     

    1.3. 예시

     


     

    2. Fragment 관리

    2.1. FragmentManger란?

    FragmentManager는 Activity 혹은 Fragment에서 휘하의 Fragment를 관리하는 클래스로, 각각 하나씩만 가지고 있다.

    이 클래스를 통해 Activity -Fragment 혹은 부모 Fragment - 자식 Fragment는 서로 상호작용을 할 수 있게 된다.

     

    2.1.1. FragmentManager의 역할

    1. FragmentTransaction을 얻어오기
    2. BackStack의 관리
    3. Fragment의 상태를 저장 또는 복원하는 기능을 제공

     

    2.2.  Fragment Backstack

    • FragmentTransaction을 Stack으로 관리하면서 popBackStack을 호출하면 FragmentTransaction을 pop하여 
      이전 상태로 변경함 
    •  FragmentTransaction을 BackStack에 추가하기 위해서는FragmentTransaction의 addToBackStack을 호출
    •  BackStack을 pop하기 위해서는 FragmentManager의 popBackStack을 호출

     

    2.3. Fragment 생명주기

    https://velog.io/@evergreen_tree/Android-%ED%94%84%EB%9E%98%EA%B7%B8%EB%A8%BC%ED%8A%B8-%EC%83%9D%EB%AA%85%EC%A3%BC%EA%B8%B0

    2.4. FragmentTransaction

    • Fragment의 연산의 집합을 나타내는 class 
    • FragmentTransaction은 FragmentManager에 의하여 하나의 연산으로 다루어 짐
    • FragmentTransaction에 여러 개의 연산(add, replace, hide, show 등)이 들어있는 경우 FragmentManager에 의해 
      한번에 처리되며 분리되어 다루어지지 않음. 

     

    3. Fragment - 데이터 전달

    3.1. Fragment 태그

    Fragment의 Tag 설정

    • Fragment에 Tag를 설정하기 위해서는 FragmentTransaction을 이용하여 add 나 replace를 호출할 때,                        파라미터로 tag를 설정
    • FragmentManager를 이용하여 Tag를 가진 Fragment를 찾아올 수 있음.

     

    3.2. Fragment로 값 전달하기

    1. Fragment에 값을 전달하기 위해서는 Bundle을 이용
    2. 전달할 값을 저장한 Bundle을 Fragment의 setArguments()로 Fragment에 설정
    3. Fragment는 getArguments로 전달한 Bundle을 얻어올 수 있고, Bundle에서 저장한 값을 읽어올 수 있음

     

    3.3. Fragment에서 Fragment 가 속한 Activity로 값 전달 

    방법 1

    Activity에 메소드를 정의하고 getActivity()로 Activity를 얻어온 다음, type casting 후 메소드 호출. 

    • 일반적인 방법으로 많이 사용되나, 확장성이 떨어진다

     

    방법 2

    1. Fragment에 interface를 정의하고 Activity가 implements한 후 전달.
    2. Fragment는 Activity를 가져와서 interface로 type casting한 다음 값을 전달한다.
    • Fragment를 사용하는 Activity가 여러 개 있을 경우 유용

     


     

     

    마무리

    자바나 코틀린이라는 게 객체라는 개념을 어렴풋하게 알고 있는 상황이라 함수나 자세한 상황을 이해하려기 보다는 대략적으로 어떻게 구성되어 있고 크게 크게 이해하려는 식으로 정리.

    대략적인 각각의 구성요소들을 파악하고 나중에 자바나 코틀린을 자세하게 공부하여 클래스에 대한 이해가 좀 확실해진 이후에 공부를 할 것으로 생각.

    어떤 순서대로 프로그램이 짜여져있는지만 고찰해보자.

    댓글