마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 Fragment 생명주기

0 추천

Fragment의 생명주기 메서드들이 어떤 식으로 사용 되는지 개념이 확실하게 잘 안잡혀서 질문 드립니다 자세히 답변 달아주시면 감사하겠습니다ㅠㅠ

 

1. onCreate() ,onCreateView(), onViewCreate 세개의 함수 모두 Bundle 객체를 받아오는데 각각의 함수에서 Bundle객체는 무슨 용도로 쓰이는건가요? Fragment의 상태를 복구하기 위해서는 어느 함수에서 복구하는게 적합한가요..? 

 

2.Activity 처럼 onRestoreInstanceState() 메서드가 Fragment에서도 쓰이나요? 만약에 쓰인다면 언제 호출되는지 알려주시면 감사 하겠습니다!

 

3. onCreateView 와 onViewCreate 두개 중 어느곳에서 뷰를 컨트롤 하면 되나요?  onCreateView의 반환값을onViewCreate가 매개값으로 받으면서 생성되는건 알고있습니다 하지만 두 함수가 어떤식으로 쓰이는지 모르겠습니다

songjae5426 (1,800 포인트) 님이 2023년 2월 12일 질문
songjae5426님이 2023년 2월 12일 수정

1개의 답변

0 추천
 
채택된 답변
1. saveInstanceState(https://developer.android.com/reference/android/app/Fragment#onSaveInstanceState(android.os.Bundle)

 통해 번들에 저장된 값이 있다면 Bundle 타입 인자엔는 null 이 아닌 값이 전달 됩니다. 근데 Fragment는 Activity와는 살짝 달라서 액티비티와 동일한 시점에서 호출되지는 않아요. 라이프사이클에 관한 부분은 안드로드에서 제일 골치아픈 부분 중의 하나입니라서 그때 그때 문서를 살펴보는 것이 좋습니다.

2. onRestoreInstanceState는 프레그먼트에는 존재하지 않습니다. 공식문서에 나온 것 처럼 Bundle로부터의 상태의 복구는 말씀하신 세개의 메소드 중에서 적절한 걸 오버라이드 하면 됩니다.

3. onViewCreated(https://developer.android.com/reference/kotlin/androidx/fragment/app/Fragment?skip_cache=true#onViewCreated(android.view.View,android.os.Bundle)가 통상적으로 뷰를 초기화 하는데 제일 적합한 곳입니다.

프레그먼트는 안드로이드의 기본 구성부분 중 하나이므로, 개발자 문서를 잘 읽어보시면 많은 도움이 될 겁니다.

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

읽다보면 사용법도 자연스럽게 아시게 될겁니다.
spark (226,420 포인트) 님이 2023년 2월 12일 답변
songjae5426님이 2023년 2월 14일 채택됨
3.번 질문에서 뷰를 초기화 한다는건 bundle에 담겨있는 데이터를 이용해 다시 복원을 한다는건가요...? 아니면 이벤트등을 거는거를 의미하는건가요..?
변수 초기화처럼 생각하시면 편하실 것 같구요.
1. View binding - findViewById로 멤버변수에 할당(ViewBinding을 사용하면 작업이 최소화 됩니다), onClickListner등의 리스너 할당, 뷰의 속성 및 스타일링 작업 등등.
2. Intent/Arguments 등 에서 값을 읽어와서 세팅하거나
3. Configuration changes 등이 발생할 때 뷰의 상태 복원작업
등 뷰를 초기의 상태로 설정하는 작업이라고 보시면 됩니다.
...