본문 바로가기

Dev/안드로이드

[안드로이드 짤막공부] 23.09.02

 1. 오랜만에 버그가 생겨서 한참 고생했다. 평소처럼 액티비티 클래스와 레이아웃 생성 후, 해당 액티비티를 생성하는 Intent 인스턴스를 만들어 startActivity()를 이용해 실행하려 했다.

그런데 디자인 해둔 레이아웃이 존재함에도 불구하고 계속 흰 화면만 나왔다.

 

 로그를 찍어 확인해보니 startActivity() 위 아래의 코드 모두 정상적으로 진행되고 있었고, 레이아웃 문제인가 싶어 확인해보아도 딱히 특별할 것 없는 ConstraintLayout이었다. 차라리 앱이 저 순간에 죽거나 에러라도 띄운다면 문제를 쉽게 해결하겠는데 전혀 문제가 발생하지 않아서 원인 찾기가 더 힘들었다.

 문제가 있는 액티비티의 onCreate() 내에 로그를 찍게 하고 확인하니 해당 로그가 전혀 찍히지 않았다. 아무래도 액티비티 생성 자체가 제대로 되지 않는 거 같았다.

 manifest 파일도 여러번 확인해보고, 혹시 몰라 startActivity()를 try 문 내에서 실행해 예외가 있는지 보고, gradle 파일들도 확인해봤는데 전혀 문제가 없었다. startActivity()를 실행하는 Fragment가 문제인가 싶어 메인 액티비티에서 실행도 해보고, 프로젝트 clean 후 rebuild도 해보았으나 변화가 없었다.

 AVD 문제라고 생각하기도 해서 다른 디바이스로 실행도 해보고 내 실제 사용 기기로 테스트 해보았으나 결과는 같았다.

 

 1시간 넘게 끙끙 대다가, 임포트 된 클래스들을 확인하던 와중에 문제를 해결할 수 있었다.

왠지 낯선 PersistableBundle이라는 친구..

 PersistableBundle이 임포트 되어 있었는데, 내가 저런 걸 쓴 적이 있던가 싶었다. 그래서 해당 패키지를 지우고 코드 내에서 어느 부분에 문제가 생기는지 확인했는데

아..

 onCreate()를 잘못 오버라이딩 하고 있었다. 파라미터로 Bundle 객체만 받는 onCreate()를 오버라이딩 해야하는데 아무래도 내가 onCreate() 자동완성으로 작성할 때 실수한 거 같았다. 해당 부분을 고치고 다시 실행하니

 

정상적으로 출력되는 레이아웃

 

 허무할 정도로 쉽게 해결되었다. 앞으로는 자동완성 할 때 조심해야겠다..