최근 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()
사용하면 끝!
'🖥 Programming > 📱 Android (Kotlin)' 카테고리의 다른 글
[Android][kotlin] ViewModel 하나로 사용하기 (0) | 2021.12.02 |
---|---|
[Android][kotlin] switch 버튼 색상 색상 바꾸기(custom) / 토글버튼(Toggle Button) (0) | 2021.11.29 |
[Android][kotlin] DecimalFormat / 숫자 천 단위 콤마, 소숫점 넣기 (0) | 2021.11.15 |
[Android][kotlin] android:adjustViewBounds="true" 안먹는 현상 (0) | 2021.11.11 |
[Android][kotlin] Android Jetpack Navigation (0) | 2021.11.09 |
[Android] This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 4.2 or newer. (0) | 2021.10.30 |
[Android][kotlin] MVVM 패턴공부 (0) | 2021.10.30 |
[Android][kotlin] DataBinding & LiveData 같이 사용하기 (0) | 2021.10.28 |