149

我有一个看起来像这样的自定义全局类

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

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

我想通过另一个方法在这个类中保留一个Activity字符串onCreate

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

它在标记线上中断并出现错误:Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

我已经检查了五次代码,但在任何地方都找不到错误。谁能告诉我错误在哪里?!

谢谢

4

2 回答 2

513

错误表明返回的对象的类型getApplicationandroid.app.Application。造成这种情况的一个可能原因是您未能在清单中定义应用程序。确保您的清单包含以下内容:

<application android:name=".MyApp"...
</application>
于 2012-05-15T19:21:53.853 回答
17

旧 Android 设备或模拟器的另一种解决方案。您在清单中定义了一个应用程序:

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

但你还有这个问题吗?

尝试禁用即时运行:

  1. 禁用即时运行
  2. 清理并重建项目
  3. 从设备中删除应用程序并再次安装,无需即时运行
于 2016-10-30T17:51:14.123 回答