안드로이드 앱 개발기 #14 - Fragment 사용시 간혹 발생할 수 있는 Fragment not attached to Activity 문제

지난 주 금요일에 요청 사항인 이미지 다운로드를 구현했고, 오늘 오전에 사업부서와 테스트 결과 PASS 판정을 받았습니다. 최종 업데이트 하기 전에 추가로 수정할 점이 없는지 코드를 리뷰하고 미비한 일부 코드를 리팩토링했습니다. 다시 테스트 중에 아래와 같은 예외가 발생하였습니다.

IllegalStateException: Fragment not attached to Activity

제가 구현한 Fragment에서 발생한 문제인데요. Fragment는 Activity에 속해야 합니다. 그런데 정확히 알 수 없는 이유로 전자가 후자에 속하는데 시간이 걸리는 경우도 있는 것 같습니다. 이 때 전자가 후자에 접근하려고 하면, 위 예외가 발생하여 앱이 강제 종료될 수 있습니다. 이 문제를 피할 수 있는 방법이 있습니다.

Fragment not attached to Activity 문제를 피하는 방법

Fragment 클래스에서는 isAdd() 메소드를 제공하며, 그것으로 Fragment가 Activity에 속하는지(attach 되었는지) 확인할 수 있습니다. 만약 isAdd() 메소드가 false를 리턴한다면, 원래 하고자 하는 작업을 하지 않고 다른 방식으로 문제를 처리해야할 것입니다.

Kotlin 언어로 앱을 개발하는 경우, isAdd() 함수 대신 isAdd 프로퍼티를 읽는 것도 가능합니다. 예를 들면, 아래와 같이 isAdd 프로퍼티의 값이 true인지 체크할 수 있지요.

if (isAdd) {
   // 액티비티에 접근하여 작업 수행 (예를 들어,  requireActivity() 함수를 통해)
}

지난 안드로이드 앱 개발기

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.19
TRX 0.13
JST 0.028
BTC 66512.58
ETH 3313.98
USDT 1.00
SBD 2.68