안드로이드 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 코드에서 초록색 음영으로 표시한 코드가 액티비티를 명시해주는(추가하는) 코드입니다.

작성자

Posted by 드리머즈

관련 글

댓글 영역