본문 바로가기
🖥 Programming/📱 Android (Kotlin)

[Android][kotlin] requireContext()와 getContext()

by MinChan-Youn 2021. 11. 10.

최근 Java기반의 Android Application을 개발하다가 kotlin기반으로 개발을 시작했다.

하지만 개발중 Context를 사용하기위해 java기반에서 사용하던 getContext()를 작성해보았지만 해당되는 내용은 없는게 아닌가!!

 

이건 또 무슨일이지하고 kotlin에서는 context를 가져오는 방법에 대해서 알아보았다.

 

확인

@NonNull
public final Context requireContext() {
    Context context = getContext();
    if (context == null) {
        throw new IllegalStateException("Fragment " + this + " not attached to a context.");
    }
    return context;
}
@Nullable
public Context getContext() {
    return mHost == null ? null : mHost.getContext();
}

 

 

requireContext()getContext()에 대해서 작성된 코드를 보았다.

두 가지의 차이점은 requireContext()는 NonNull annotation이 붙어있고 / getContext()는 Nullable이다.

 

requireContext()는 getContext()에서 반환된 context가 Null인 경우 IllegalStateException을 throw한다.

getContext()는 context()가 호스트에 붙어있지 않을 때 Null을 반환한다.

 

Fragment에서 context에 접근하면 null이 아닌 값을 반환하지만 / fragment가 activity에 attach 되어있지 않은 경우 예외가 발생할 수 있다고 한다;. 그래서 항상 NonNull인것은 아니라고한다.

 

 

 

결론

Java의 경우 getContext()를 사용하여 context에 대해서 접근 가능

Kotlin인 경우 requireContext()를 통해 Context()가 Null이 아님을 보장해야한다.

 

 

------

Java는 getContext()

Kotlin은 requireContext()

사용하면 끝!