Custom global Application class breaks with "android.app.Application cannot be cast to"

Android

Android Problem Overview


I have a custom global class which looks like this

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

    public void setMainAct(String mainAct) {
        MainAct = mainAct;
    }
}

I want to preserve a string in this class via another Activity in its onCreate method.

    String local = "myLocalVariable";
    ((MyApp) getApplication()).setMainAct(local); //breaks here!!!
    String name = ((MyApp) getApplication()).getMainAct();

It breaks on the marked line with error: Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

I've checked the code for five times and I cannot find error anywhere. Can anyone tell me where the error is?!

Thanks

Android Solutions


Solution 1 - Android

The error states that the type of the object returned by getApplication is android.app.Application. A possible cause for this is that you failed to define the application in the manifest. Make sure that your manifest includes something in the lines of:

<application android:name=".MyApp"...
</application>

Solution 2 - Android

Another solution for older Android devices or emulators. You defined an application in the manifest:

    <application 
           android:name=".MyApp"...
    </application>

but you still have this problem?

Try to disable instant run:

  1. Disable an Instant run
  2. Clean and rebuild the project
  3. Remove the app from device and install it again without Instant run

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsandaloneView Question on Stackoverflow
Solution 1 - AndroidK-balloView Answer on Stackoverflow
Solution 2 - AndroidValView Answer on Stackoverflow