CriminalIntentApplication cannot be cast to android.app.Activity

It’s crashing when I first start up the application. Telling me that CriminalIntentApplication cannot to be cast to android.app.Activity.

I wasn’t sure if I was supposed to remove the .MainActivity from the manifest file. It would only let me list one thing with the attribute name in the application element of the xml file.

package com.bignerdranch.android.criminalintent

import android.app.Application
import com.bignerdranch.android.criminalintent.CrimeRepository
class CriminalIntentApplication : Application() {

    override fun onCreate() {
        super.onCreate()
        CrimeRepository.initialize(this)
    }
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.CriminalIntent">
        <activity
            android:name=".CriminalIntentApplication"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
--------- beginning of crash
2023-03-09 12:09:57.512 11573-11573 AndroidRuntime          com...dranch.android.criminalintent  E  FATAL EXCEPTION: main
                                                                                                    Process: com.bignerdranch.android.criminalintent, PID: 11573
                                                                                                    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.bignerdranch.android.criminalintent/com.bignerdranch.android.criminalintent.CriminalIntentApplication}: java.lang.ClassCastException: com.bignerdranch.android.criminalintent.CriminalIntentApplication cannot be cast to android.app.Activity
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3591)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3842)
                                                                                                    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2252)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7842)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
                                                                                                    Caused by: java.lang.ClassCastException: com.bignerdranch.android.criminalintent.CriminalIntentApplication cannot be cast to android.app.Activity
                                                                                                    	at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
                                                                                                    	at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
                                                                                                    	at android.app.Instrumentation.newActivity(Instrumentation.java:1285)
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3578)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3842) 
                                                                                                    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) 
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2252) 
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201) 
                                                                                                    	at android.os.Looper.loop(Looper.java:288) 
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7842) 
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

Ok, I figured it out. I had the .CriminalIntentApplication in the wrong part of the Manifest file. It should have been above android:allowBackup=true in the application element.

1 Like