JY Tech
[Android] unable to instantiate activity componentinfo 본문
[Android] unable to instantiate activity componentinfo
J.Dragon 2024. 2. 21. 23:07※본 포스팅은 안드로이드 코딩 중 unable to instantiate activity componentinfo 오류에 대한 해결입니다.
해당 오류에 대한 전체적인 해결법을 소개하고 필자의 경우 어떻게 해결했는지는 포스팅 끝쪽에 나와있습니다※
A클래스에서 클릭을 하면 새로운 화면이 열리도록 B클래스를 intent로 연결시켰다.
테스트를 해놓고 다른 부분을 개발하기 위해 잠시 미뤄뒀다가 오늘 다시 켜봤는데
unable to instantiate activity componentinfo
라는 오류가 발생했다.
이 오류는 UI를 로드할 수 없을 때 발생한다.
기본적으로 어떤 클래스를 시작하는데 오류가 발생하면 해볼 수 있는 가장 기본적인 방법은
1. 매니페스트 등록 확인
새로운 클래스는 꼭 매니페스트에 등록을 해줘야 한다.
<activity android:name=".myClass">//""사이에 .내 클래스 의 형식으로 입력
<!-- 필요한 다른 설정들 -->
</activity>
이런식으로 등록을 해줘야 한다.
필자는 얼마전에 테스트를 했을 때 성공했으니 당연히 매니페스트에 등록이 돼 있어서 이 부분은 문제 없음이 확인됐다.
2. 프로젝트 클린-리빌드
안드로이드 스튜디오 상단에서
[Build - Clean Project - Rebuild Project]를 차례로 눌러준다.
필자의 경우 이렇게 했는데 실패..
기본적인 부분은 문제가 없음이 확인돼서 이제 다음 단계를 실행 해 봤다
3. Activity클래스를 public으로
클래스가 abstract나 private로 선언되면 이런 오류가 발생할 수 있다고 한다
역시 이 부분도 문제가 없었다.
4. gradle 문제
gradle에 프로젝트 명이 제대로 적혀있는지 확인
필자는 이부분도 문제가 없었다
5. 초기화
onCreate 안에 setContentView가 있는지 확인
사실 이부분은 하나를 만들어놓으면 복붙해서 쓰는 경우가 많아서 문제가 없을 확률이 높다.
-----------------------------------------------------------------------------------------------------------------------------------
결국 모든 방법이 실패했고
A클래스에서 B클래스가 아닌 다른 클래스를 연결했더니 잘 연결돼서 코드 문제인가 싶어
B클래스의 onCreate 내부의 모든 코드를 날리고 xml만 연결시켜도 실패했다.
그래서 xml이 문제인가 싶어 이 xml을 다른 코드에 넣고 실행시켰는데 그건 또 잘 열렸다....
30분 넘게 코드를 뒤적이다가
onCreate보다 상위에 위치한
public myClass(Context context) {
this.context = context;
}
부분을 발견했다...
context는 현재상태를 알 수 있는건데 필자의 경우 dialog에서 this처럼 쓸 수 있게 생성자처럼 만들놨는데 이걸 잘못사용했다
이부분을 날리니까 다시 실행됐다.
아마 다른 기능을 구현하려고 코드를 넣어놓고 실행한다는걸 잊었나보다...
결론: unable to instantiate activity componentinfo 오류는 매니페스트 확인, 프로젝트 clean-rebuild, onCreate이전에 선언됐는지 등을 확인하자!
'Programming > Error Solution' 카테고리의 다른 글
[안드로이드]findViewById오류 (0) | 2023.12.09 |
---|---|
[파이썬] raise KeyError(key) from err (1) | 2023.11.27 |
[파이썬]xlrd.biffh.XLRDError(xlrd오류) (1) | 2023.11.10 |
[C#/윈폼]"도구상자 항목 '###'을(를) 로드하지 못했습니다. 해당 항목은 도구상자에서 제거됩니다. (0) | 2023.04.30 |
[파이썬,sqlite] incorrect number of bindings supplied. the current statement uses 1 and there are 3 supplied (0) | 2023.04.21 |