반응형
지난 이야기
2020/02/01 - [Android + Kotlin + Figma] - Kotlin 이슈 5 include 대신 정적 fragment, Unresolved reference.
지난 번에 크롤링 코드를 fragment를 상속받아 별도의 클래스로 구현하는 작업을 했었습니다. 오늘은 이 작업을 하던 중 실수했던 부분에 대해 알아보겠습니다.
TL; DR
view!!
값은onCreateView()
이후 설정된다.- 고로 이를 사용하는 함수는
onCreateView()
이후 호출해야 한다.
앱이 이유 없이 꺼진다?~?!!
코드를 아래처럼 작성했을 때, 앱이 이유 없이 꺼졌었습니다. 에러도 뜨지 않아 약간 고생했었는데요. 여러분들은 뭐가 문제인지 아시겠나요??
class CrawlLottoFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
view!!
return inflater.inflate(R.layout.content_lotto_round, container, false)
}
}
바로 view가 생성되기 이전에 view에 접근해서인데요! 이게 저렇게 이어진 코드로 볼 때는 이상한 점을 바로 알 수 있지만 함수에 감싸이는 순간!! 점점 헷갈려옵니다...
class CrawlLottoFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
super.onCreateView(inflater, container, savedInstanceState)
initCrawl()
getRound()
return inflater.inflate(R.layout.content_lotto_round, container, false)
}
}
그래서 어느 시점에서 무엇을 호출할 수 있는지 lifecycle을 아는 게 중요합니다. 안드로이드 공식 홈페이지에서는 이 fragment의 lifecycle에 대해 자세히 설명하고 있는데요.
fragment도 결국 activity의 일종인지라, activity의 메소드를 사용하는 모습을 볼 수 있습니다. fragment는 여기에 몇 개의 메소드가 추가되었는데요. 이 중 onCreateView()
는 시스템이 최초로 UI를 그릴 때 호출되며, UI가 존재하는 경우 반드시 View를 반환해야 합니다.
다음 시간에는 fragment를 동적으로 사용하는 방법과 ViewPager
에 대해 알아보겠습니다.
반응형
'Android' 카테고리의 다른 글
kotlin 이슈 8 BottomNavigationView + ViewPager2 이용하여 슬라이드 메뉴 만들기 (0) | 2020.02.23 |
---|---|
Kotlin 이슈 7 Room 사용하여 안드로이드 로컬 db 시작하기 (0) | 2020.02.02 |
Kotlin 이슈 5 include 대신 정적 fragment, Unresolved reference. (0) | 2020.02.01 |
Kotlin 이슈 4 기능 별로 레이아웃 나누기, include (0) | 2020.02.01 |
Object Expressions 코틀린 기초 문법 (3) - Koans 풀이 (0) | 2020.01.28 |