어제 과제를 하다가 뻘짓을 한게 떠올라 글을 써본다.
구현했으니 이제 확인해봐야지~ 하고 실행을 시키는데 앱이 계속 꺼진다..
분명? 틀린 것이 없다고 생각했는데 자꾸 꺼졌다 (흔한 맞왜틀)
로그캣을 살펴봤다...
java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.widget.Button
위 에러가 발생했다.
constraint layout은 Button 타입으로 캐스팅 될 수 없다는 의미인데.. 레이아웃이 위젯의 상위타입이 아니니...당연한 것이였다.
처음엔 코드를 다시 살펴봤는데 코드는 문제가 없어보였다. 그래서 xml로 가서 일일히 살펴보았다....
원인은 여기에 있었다.
회원가입 버튼에 id를 지정해놓았는데
<Button
android:id="@+id/button"
...
/>
constraint layout에 id에도 똑같이 지정해놓은것이였다..
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/button"
...
/>
이러고나서 findViewById를 통해 컴포넌트를 가져오는데
private val btnSignIn by lazy { findViewById<Button>(R.id.button) }
findViewById는 위에서부터 id값을 찾기 때문에(트리로 구성되어 순회한다.) 제일 상위에 있는 constraint layout의 id를 가져오게 된 것이다..
아마 복붙을 하다가 잘못들어간거 같다...
하나하나 확인을 잘하는 습관을 들여야겠다. 이상한 곳에서 시간낭비하지 않도록....
'Android > Trouble Shooting' 카테고리의 다른 글
[Android] Compose - layout error (0) | 2023.12.29 |
---|---|
[Android] GPS 상태 확인 (0) | 2023.11.23 |
[Android] 앱 출시 후 카카오 맵이 보이지 않는 현상 (0) | 2023.11.22 |
[Android] LifeCycle 관련 (0) | 2023.08.15 |