안드로이드 android.content.ActivityNotFoundException: Unable to find explicit activity class {xxx/xxx.XXX}; have you declared this activity in your AndroidManifest.xml?
프로그래밍/Android 관련2018. 3. 12. 15:50
안녕하세요. 개발자 드리머즈입니다.
안드로이드 개발중에 발생한 이슈 정리합니다.
문제 현상
앱을 실행시킨 후 특정 액티비티 진입시 크래쉬가 발생하여 앱이 종료됐습니다. 에러로그는 아래와 같았습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | E/AndroidRuntime: FATAL EXCEPTION: main Process: xxx, PID: 28918 android.content.ActivityNotFoundException: Unable to find explicit activity class {xxx/xxx.XXX}; have you declared this activity in your AndroidManifest.xml? at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1805) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1523) at android.app.ContextImpl.startActivity(ContextImpl.java:791) at android.app.ContextImpl.startActivity(ContextImpl.java:768) at android.content.ContextWrapper.startActivity(ContextWrapper.java:356) at com.dreamaz.sharemoneybook.RoomListActivity$1.onClick(RoomListActivity.java:138) at android.view.View.performClick(View.java:5637) at android.view.View$PerformClick.run(View.java:22429) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) | cs |
원인
안드로이드 정책에 따라 실행되는 모든 액티비티(Activity)는 AndroidManifest.xml에 명시가 되어야합니다. 만약 실행되는 액티비티가 AndroidManifest.xml에 존재하지 않는다면 위의 문제현상과 같이 크래쉬 발생 후 앱이 종료됩니다.
해결 방법
소스의 AndroidManifest.xml파일을 열어서 없다고 한 액티비티를 추가하면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxx"> <application android:allowBackup="false" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Holo.Light.NoActionBar" > <activity android:name=".XXX" > </activity> </application> </manifest> | cs |
위의 AndroidManifest.xml 코드에서 초록색 음영으로 표시한 코드가 액티비티를 명시해주는(추가하는) 코드입니다.
댓글 영역