自定义全局应用程序类打破“android.app.Application不能转换为”

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

import android.app.Application; public class MyApp extends Application { public String MainAct; public String getMainAct() { return MainAct; } public void setMainAct(String mainAct) { MainAct = mainAct; } } 

我想通过onCreate方法中的另一个Activity在这个类中保留一个string。

  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

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

谢谢

该错误指出getApplication返回的对象的types是android.app.Application 。 一个可能的原因是你没有在清单中定义应用程序。 确保你的清单包含以下内容:

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

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

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

但是你仍然有这个问题?

尝试禁用即时运行:

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