728x90
서사
매번 binding으로 view를 연결하다가 팀프로젝트를 진행하는데 학과수업 프로젝트라 팀원들이 compose를 모를 수 있겠다싶어서 그냥 findViewById로 연결해주고 나중에 리팩토링하려고했다. 근데 binding만 해주다. 직접 적어줄라니 응근 귀찮았다.
초보적인 실수
오랜만에 써서 그랬나...여튼 onCreate 밖에 Button btn = findViewById(R.id.btn)이런식으로 작성했다.
그러고 앱이 막 꺼져서 혼자 당황했다..ㄷㄷ
왜 onCreate 밖에 쓰면 안되는지?
- findViewById는 현재 레이아웃 계층에서 View를 검색한다. 따라서 외부에서 findViewById를 호출하면 아직 onCreate 뷰 계층이 초기화되지 않아 Exception이 발생하는 것이다.
- 좀 더 쉽게 말하면 생명주기상 onCreate가 실행되고 findViewById가 호출되어야하는데 반대가 되어서 에러가 발생한다는 뜻이다.
- onCreate 밖에서 뷰를 호출할거면 변수만 전역변수로 호출해주고 onCreate에서 findViewById를 연결해주자.
그리고 이런 실수는 하지말자...
'안드로이드 > 프로젝트' 카테고리의 다른 글
firebase 회원가입시 의문의 에러 (0) | 2023.04.07 |
---|---|
안드로이드 스튜디오 파이어베이스 연동시 json파일 에러 (0) | 2023.04.03 |