티스토리 뷰

Android

requireContext, requireActivity

parkho79 2021. 8. 26. 15:07
728x90



Fragment 를 사용하다 보면 종종 Context 나 Activity 가 필요할 때가 있다.

Java 에서는 getContext(), getActivity() 를 써왔지만 Kotlin 에서는 null 을 return 할 수 있어 하단과 같이 많이 쓴다.

 

 

이번 포스팅에서 위와 같은 상황의 대안으로 Support Library 27.1.0 부터 제공하고 있는 requireContext(), requireActivity() 를 알아보자.



requireContext, requireActivity 구현부

하단은 Fragment 에 있는 requireContext(), requireActivity() 함수의 구현부다.

막상 보면 별거 없다. context 나 activity 가 null 인 경우는 IllegalStateException 을 발생 시킨다.

 



getXXX() vs requireXXX()

"context!!, activity!!" 처럼 쓰는 것과 어떤 차이가 있을까?

큰 차이는 아니지만 Exception 이 구체적이다.

"context!!, activity!!" 인 경우는 NPE 가 발생 하지만, requireXXX 는 IllegalStateException 이 발생한다.

("Fragment " + this + " not attached to an activity.") 요런 설명까지 해준다.

 

즉, Fragment 에서 context 나 activity 를 사용하는 상황이 fragment 가 attach 되서 정상적인 lifecycle 이라면 requireXXX 를 쓰는 것이 바람직하다.



728x90

'Android' 카테고리의 다른 글

Android 화면 녹화  (0) 2021.08.31
유용한 에니메이션 라이브러리 - Lottie  (0) 2021.08.31
Glide 로 background image 설정하기  (0) 2021.08.06
Activity Result API  (0) 2021.06.04
유용한 이미지 라이브러리 - Glide (2)  (0) 2021.05.13
댓글