빙수왕의 개발일지

Fragment 생성 시 주의할 점 본문

개발/Android

Fragment 생성 시 주의할 점

빙수킹 2020. 8. 6. 23:13

fragment를 같은걸 2개생성하는걸 방지

-> supportFragmentManager.findFragmentByTag(“”)

를 사용하여 이것이 null일 경우 새로 생성해준다.

이런 메소드를 fragment의 companion object에 넣어주고, 액티비티에서 생성시 얘를 콜함

 

onAttach의 문제: 프래그먼트에서 프래그먼트를 띄울 때는 호출되지 않는다.

supportFragmentManager vs childFragmentManager vs parentFragmentManager
// childFragmentManager 내(프래그먼트A)가 가지고있는. A프래그에서 B프래그를 붙일 때 사용한다.
// 위와 같은 상황에서 fragmentManager을 사용하면, 이건 A의 매니저가 아니라 액티비티의 매니저를 갖다쓰는거기 떄문에 안좋음.
// 결론적으로 프래그먼트에서 프래그먼트 띄울 때는 childFragmentManager를 사용하자.

// parentFragmentManager -> 라이브러리 버전이 낮으면 안나온다. 그럼 무슨라이브러리?? Android Support Fragment 1.1.0부터 생겼다. 근데 ktx를 포함하면 얘는 기본임.

프래그먼트와 액티비티 직접 X (재사용성이 낮으므로)

-> 그래서 프래그먼트 안에 인터페이스를 만들어서 한다.

 

 

프래그먼트에서 액티비티를 사용시

fragment의 onAttach() ~ Detach 사이에는 activity가 존재한다!!

 

주의점들

1. public default 생성자 꼭 그대로 냅두기. 유지!!
2. fragment 재생성.. 
3. fragment lifecycle vs fragment viewlifecycle 다름을 알기 -> 뷰만 없어졌을 때 앱이 죽는 이슈가 있을 수 있다.
onCreate - onCreateView - onDestoryView - onDestroy 순서
onCreateView와 onDestoryView는 여러번 탈 수 있음.