1 분 소요

Attempt to invoke virtual method
'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)'
on a null object reference

몇 기능들을 제공하는 메뉴 버튼이 Actionbar에 적용되는 바람에 원래는 사용하지 않을 예정이었던 Actionbar를 활성화했다.
보다 커스터마이징을 하고자 한다면 기본으로 제공되는 Actionbar 대신 임의로 xml과 activity에 toolbar를 선언해
추가하는 방법도 있어보여서 나도 그렇게 해볼까 했지만 이미 가이드를 따라가면서 구현한 메뉴가 Actionbar에만 적용이 되고
새로 생성하는 toolbar엔 적용이 되질 않았다. 딱히 커스터마이징을 세세히 할 필요가 없어서 Actionbar를 이용하기로 했다.
toolbar를 사용하는게 대세로 보이지만 본인 능력 부족으로 Actionbar를 어쩔 수 없이 택했다. 😓

일단 해당 에러는 Actionbar를 사용하지 않는다고 해놓고 사용하는 메소드를 호출한다거나,
상속을 안했는데 사용한다고 했거나 등등 여러 원인으로 시작해 발생한다는걸 구글링하면서 알게 됐다.
🤨? 나는 분명 Actionbar를 사용한다고 했는데? 왜 오류를 뱉는지 이유를 모르겠어서 구글링과 함께 긴 여정을 시작했다.

먼저 Actionbar를 사용하자마자 이런 에러가 생긴건 아니었다.
기본으로 등록되는 타이틀 색상을 배경색과 같게 만들어서 안보이게 하고 싶었다.
당연히 방법을 몰랐기에 구글링을 하면서 이것저것 적용을 해봤지만 거짓말같이 하나도 적용이 되질 않았다.
stackoverflow에 재질문까지 하면서 답을 얻었는데 타이틀 색상이 아닌 타이틀 자체를 없애는 방법에 대한 답을 얻게 됐다.
setSupportActionBar(toolbar)를 선언하라고 하길래 toolbar가 필요하구나! 싶어 추가했고 에러가 끊임없이 생겨났다.

도대체 어디서 오류가 나는거지 싶어 바꾼 설정을 되돌리는 삽질을 계속했고 다음 줄을 주석 처리하니 정상적으로 실행됐다!
NavigationUI.setupActionBarWithNavController(this, navController)
원래 정상적으로 돌아가는 부분이어서 새로 추가한 내용에 문제가 있음을 알게됐고 백업하지 않은 나 자신을 반성했다.
시간을 좀 날려가며 toolbar를 추가한게 원인인걸 알게됐고 이전 설정으로 돌렸는데도 문제는 여전했다..
최종 원인은 AppManifest.xml에 android:theme="@style/Theme.AppCompat.Light.NoActionBar이 추가돼서 였다.
안드로이드 공식 문서에서 toolbar를 어떻게 추가하는지 찾아보다 추가해놓고 잊어먹었던 걸로 보인다.

Actionbar를 사용하려는데 비활성화한다는 선언(NoActionBar)을 이미 했으면서
setupActionBarWithNavController()를 쓰니까 모순이 있어서 에러를 계속 뱉는 모양이었다.
결국 AppManifest.xml에서 해당 줄을 android:theme="@style/Theme.NewProject"로 바꾸고 해결할 수 있었다.

Git을 생활화 합시다. 😩

카테고리:

업데이트:

댓글남기기