Fragment란
Fragment는 FragmentActivity 내의 어떤 동작 또는 사용자 인터페이스의 일부를 나타냅니다. 여러 개의 프래그먼트를 하나의 액티비티에 결합하여 창이 여러 개인 UI를 빌드할 수 있으며, 하나의 프래그먼트를 여러 액티비티에서 재사용할 수 있습니다. 프래그먼트는 액티비티의 모듈식 섹션이라고 생각하면 됩니다. 이는 자체적인 수명 주기를 가지고, 자체 입력 이벤트를 수신하고, 액티비티 실행 중에 추가 및 삭제가 가능합니다(다른 액티비티에 재사용할 수 있는 "하위 액티비티"와 같은 개념).
- 액티비티가 길어지면 구성요소가 많기 때문에 fragment를 사용하면 유지보수에 한결 수월하다.
- 액티비티의 파트를 나누어 가져가 책임진다.
- 라이프 사이클이 존재한다.
- 액티비티 종속적이다.
문제점?
액티비티의 한계점을 해결하려 Fragment가 있지만 다른 문제로 액티비티의 종속적이다보니 프라그먼트의
라이프사이클도 관리를 해야한다. 관리 포인트가 더 어려워질수도 있다.
사용법
1. 프라그먼트를 상속받아라.
2. Override Method( Alt + Insert)
메소드 추가항목
- OnAttach
- OnCreate
- OnCreateView
- OnViewCreated
- OnActivityCreated
- OnStart
- OnResume
- OnPause
- OnStop
- OnDestroyView
- OnDetach
* 오버라이딩
- 부모 클래스에 상속받은 자식클래스에서 부모에 있는 변수를 수정가능
* 오버로딩
- 한클래스 내에서 이름이 같은 함수지만 파라미터가 틀리면 사용가능
3. xml에서 보여줄부분에 뷰컴포넌트인 프라그먼트 태그 사용
- name 속성 사용해서 어떤 프라그먼트가 내용을 채울건지 선택. 자동 완성 .
- ID 필수
4. OnCreateView안에서 뷰담당. view?{ 여기 }
- 프라그먼트가 인터페이스를 처음으로 그릴때 호출된다.
- inflater -> 뷰를 그려주는 역할
- container -> 부모뷰
5. inflater 안에 inflate 함수사용 (xml 새로있어야함)
- inflater.inflate(R.layout.fragment_one(xml이름), container(부모뷰), false(붙을지말지))
- return 써줄것. inflate가 View타입이라 괜찮.
코드(동적)으로 추가하는법.
버튼클릭시 프라그먼트 불러오고
버튼클릭시 프라그먼트 삭제하는법.
프라그먼트 액티비티 oncreate안
button.setOnClickListener {
//6. 프라그먼트 만들어준다, 프라그먼트 매니저 도움을 받는다.
//val fragmentone : Fragmentone = Fragmentone() -> 전역변수로 설정
val fragmentManager: FragmentManager = supportFragmentManager
//7.트랜잭션(transaction) = 작업의 단위 / 시작과 끝을 반드시 할것.
//시작
val fragmentTransaction = fragmentManager.beginTransaction()
//내용
//프라그먼트 붙이는 방법 replace/add
fragmentTransaction.replace(R.id.container, fragmentone)
//끝
//commitnow -> 지금 당장, commit ->시간될때해(좀더 안정적,보통많이 사용)
fragmentTransaction.commit()
}
button2.setOnClickListener {
//val fragmentone : Fragmentone = Fragmentone() -> 전역변수로 설정
val fragmentManager = supportFragmentManager
//시작
val fragmentTransaction = fragmentManager.beginTransaction()
//내용
//프라그먼트 삭제 방법 remove/detach *detach는 다시안붙혀짐
fragmentTransaction.remove(fragmentone)
//끝
fragmentTransaction.commit()
}
'Before > Android' 카테고리의 다른 글
Android Library(glide) (0) | 2020.03.12 |
---|---|
Context , Thread (0) | 2020.03.12 |
Android UI (0) | 2020.03.11 |
Resource (0) | 2020.03.11 |
Fragment(2) (0) | 2020.03.10 |