java.lang.IllegalStateException: Fragment not attached to a context 에러해결

문성운·2024년 8월 6일

개발을 진행하다 마주친 에러...

context관련 에러인건 알겠는데 처음보는 에러라 초반에 좀 헤맸다.

구글링을 통해 찾아보니 Fragment가 Activity에 Attach되지 않았을 때 context를 호출하면 발생한다고 한다

위에 사진을 보면 getContext()와 requireContext()의 구조가 조금 다른걸 확인할 수 있는데

getContext()Nullalble
requireContext()NonNull
로 다른걸 볼 수있다.

그래서 getContext()를 사용했다면 attach 되지 않아도
Nullable이기 때문에 null이 반환되어 에러가 나지않지만

requireContext()NonNull이기때문에
contextnull이라면 throw해서 위에 Logcat에 있는 에러를 확인할 수 있다

찾아보니 해결방법은 생각보다 간단했다

위 사진처럼 onAttach를 override하여 그 안에서 context를 정의해주고 해당 context를 사용하면 해결된다

혹은 isAdded 이란 속성을 사용해서 해결하는데 isAdded는 현재 Fragment가 Activity에 연결되어있는지 확인하는 속성이다
이 속성을 이용해 if문으로 동작을 수행하기전에 검사를 해주면 생각보다 간단하게 해결할 수 있다

profile
성장하는 안드로이드 개발자

0개의 댓글