自定义全局Application类中断“android.app.Application无法强制转换为”

时间:2012-05-15 19:20:11

标签: android

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

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

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

由于

2 个答案:

答案 0 :(得分:437)

错误指出getApplication返回的对象类型为android.app.Application。可能的原因是您无法在清单中定义应用程序。确保您的清单包含以下内容:

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

答案 1 :(得分:11)

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

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

但你还有这个问题吗?

尝试禁用即时运行:

  1. 禁用即时运行
  2. 清理并重建项目
  3. 从设备中删除应用并重新安装,无需立即运行