Fragment가 없다면?
Activity : 앱에 보이는 화면 단위
Activity 만으로 화면을 구성해야함
액티비티가 길어지면 문제가 발생
->관리 포인트가 많아짐
-> 유지보수성 저하
Android Device 다양성
- SmartPhone
- Tablet
폰트 크기 px을 dp (display point) 사용으로 각기 다른 기종을 대응해왔는데
Tablet은 DP단위로 해결할 수 없음.
Fragment 필요성?
단어 뜻 그대로 전체 화면(Activity) 구성요소를 쪼갤 수있음
-> 개발자 파트 나누기 가능.
Fragment Lifecycle
Framgent의 생명주기는 Activity에 종속된다.
== Activity 가 종료되면 Fragment 또한 같이 종료된다.
[주요 생명주기 관련 메소드]
- 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]
'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 |