[Android] Fragment

2020. 4. 13. 00:28·Android

 

Fragment가 없다면?

 

Activity : 앱에 보이는 화면 단위

Activity 만으로 화면을 구성해야함

 

액티비티가 길어지면 문제가 발생

->관리 포인트가 많아짐

-> 유지보수성 저하

 

 

Android Device 다양성

  • SmartPhone
  • Tablet 

 

폰트 크기 px을 dp (display point) 사용으로 각기 다른 기종을 대응해왔는데

Tablet은 DP단위로 해결할 수 없음.

 


Fragment 필요성?

단어 뜻 그대로 전체 화면(Activity) 구성요소를 쪼갤 수있음

-> 개발자 파트 나누기 가능.


Fragment Lifecycle

Framgent의 생명주기는 Activity에 종속된다.

== Activity 가 종료되면 Fragment 또한 같이 종료된다.

Fragment - Activity Lifecycle

[주요 생명주기 관련 메소드]

  • onAttach() : Fragment가 Activity에 붙여짐으로써 시작되는 메소드
  • onCreateView(): layout(.xml)파일이 만들어지는 메소드
  • onActivityCreated(): Fragment의 Activity 생성이 완료된 시점에 호출되는 메소드 (초기화 작업이 이루어지는 시점)
  • onStart() / onResume() / onPuase() / onStop() : Activity 생명주기 콜백 메소드와 맥이 같음.
  • onDestroyView(): Fragment를 화면에서 사라지면서 BackStack에 상태를 저장해두는 작업을 하는 메소드

BackStack 저장 X -> Destory->Detach

BackStack 저장O -> Back button Click -> 이전 Fragment로 돌아감 -> onCreateView() 부터 재시작.

 

 

Fragment 주의 사항
  • Fragment에는 Activity mthod들이 그대로 존재하는 것은 아님.
  • Fragment 내부에서 Activity 액세스를 위해 Activity를 통해 멤버를 액세스 할 필요가 있음. ex( activity!!.findViewByid<Button>(R.id.button)
  • Event Handler를 XML에 작성 불가능. -> (.kt 에서 동적으로 작성)
  • Fragment 초기화는 실행 순서를 고려하여 수행함. 
  • Fragment는 독립 모듈로 생성자의 인자가 없다.

-> 일반적으로 onCreate 코드는 onActivityCreated 에 작성한다.

 

단점은 없나요?

Fragment가 등장함으로써

Activity 뿐만 아니라 Fragment의 Lifecycle을 따로 관리해줘야함.

 

 

* 하지만 사실..Fragment의 Lifecycle을 따로 컨트롤할 일은 사실 많지않다! 

 

어떻게 쓰나요?

보통은 동적으로 생성.

 

FragmentManager & FragmentTransaction Class 이용

 - Fragment를 담을 Layout 생성 -> Layout 교체

 

fragmentransaction.add replace remove 등의 메소드 활용.

마지막에는 반드시 transaction.commit()


[Reference]

https://developer.android.com/guide/components/fragments

저작자표시 (새창열림)

'Android' 카테고리의 다른 글

[Android] Setting Export/Import  (0) 2020.05.04
[Android] Android Studio 자주쓰는 단축키 정리  (0) 2020.05.04
[Android] Back Stack & Task  (0) 2020.05.01
[Android] RecyclerView (feat. Color Array)  (0) 2020.04.24
[Android] AdapterView  (0) 2020.04.24
'Android' 카테고리의 다른 글
  • [Android] Android Studio 자주쓰는 단축키 정리
  • [Android] Back Stack & Task
  • [Android] RecyclerView (feat. Color Array)
  • [Android] AdapterView
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    오늘
    어제
    • 분류 전체보기 (429) N
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (문제풀이) (56)
        • Algorithm (이론) (23)
      • JVM (64) N
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (23) N
        • Error (7)
      • 기타 (68)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (12)
        • git (19)
        • 잡동사니 (26)
      • 재테크 (11)
        • 세무 (4)
        • 투자 (3)
        • 보험 (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • 시스템 보안 (5)
      • 네트워크 (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • 저작권과 스마트폰의 이해 (0)
      • 생각 뭉치 (6)
      • 궁금증 (2)
      • Private (4)
        • 이직 경험 (0)
        • 꿈을 찾아서 (1)
      • Android (21)
        • OS (4)
  • 블로그 메뉴

    • 홈
    • WEB
    • 알고리즘
    • DataBase
    • Linux
    • Mobile
    • C
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    database
    javascript
    java
    docker
    C++
    Kotlin
    Git
    Bitcoin
    알고리즘
    프로그래머스
    linux
    백준
    ubuntu
    algorithm
    android
    Programmers
    PostgreSQL
    JPA
    Spring
    kafka
  • hELLO· Designed By정상우.v4.10.3
M_Falcon
[Android] Fragment
상단으로

티스토리툴바