getContext(), requireContext()
먼저 메서드의 정의를 보면 다음과 같다.
@Nullable
public Context getContext() {
return mHost == null ? null : mHost.getContext();
}
getContext()는 Nullable(1), requireContext()는 NonNull(2) Annotation(주석)이 붙어있다.
getContext()는 context가 호스트에 붙어있지 않을 때 Null을 반환한다.
@NonNull
public final Context requireContext() {
Context context = getContext();
if (context == null) {
throw new IllegalStateException("Fragment " + this + " not attached to a context.");
}
return context;
}
requireContext()는 getContext()에서 반환된 context가 Null인 경우 IllegalStateException를 throw한다.
일반적으로 Fragment에서 context에 접근하면 null이 아닌 값을 반환하지만,
Fragment가 Activity에 attach 되지 않은 경우 등의 예외가 발생할 수 있으므로 Fragment.getContext()가 항상 NonNull인 것은 아니다.
따라서 requireContext()를 통해 Context가 Null이 아님을 보장할 수 있다.
요약
Java의 경우 그냥 getContext()를 사용하면 되지만,
Kotlin의 경우 Null이 아닌 Context를 전달해주어야 한다면 requireContext()를 사용해야 한다.
(1) Nullable
: Null 값을 넣을수 있다는 뜻(kotlin 사용시 ? 적으면 Nullable 입니다.)
(2) NonNull
: Null 값을 넣을수 없다는 뜻(kotlin 사용시 아무것도 적지 않으면 NonNull 입니다.)
=> Annotation 미사용 : default 로 Nullable로 작동합니다.
2022.04.18 - [분류 전체보기] - [Android] getContext(), getApplicationContext(), getBaseContext(), this의 차이
'Programming 개발은 구글로 > JAVA[Android]' 카테고리의 다른 글
Android studio - 한글지원 (0) | 2022.04.27 |
---|---|
[안드로이드] BottomNavigationView로 하단 바 만들기 (0) | 2022.04.19 |
[안드로이드] getContext(), getApplicationContext(), getBaseContext(), this의 차이 (0) | 2022.04.18 |
[안드로이드] JAVA 싱글톤 패턴 (0) | 2022.04.16 |
[안드로이드] Swiperefreshlayout - Swipe 새로고침 (0) | 2022.04.15 |
댓글