15

我在一个 Activity 中运行以下行,它在同一个应用程序中,但在不同的包中:

AppObject appObj = (AppObject)this.getApplication();
// FYI: AppObject is my extension class of Application.

它只返回一个空指针,而当我将它移动到“主”包并从那里运行它时,它会按预期返回应用程序引用。

我已经在我的 AndroidManifest.xml 中使用完整的限定类名定义了活动,因为它位于另一个包中:<activity android:name="com.foo.bar.TestActivity"></activity>


更新:正如以下问题中所建议的,android:name="AppObject"已经在<application>AndroidManifest.xml 的标签中

4

4 回答 4

28

调用getApplication()活动的onCreate()方法很重要,而不是在构造函数中。

于 2011-05-10T06:47:12.693 回答
4

您需要使用您的类名将应用程序标记更新到 AndroidManifest.xml,该类名是从 Application 扩展而来的,具有正确的包名。

<application android:name=".AppObject">


根据应用程序标签谷歌文档,需要维护全局应用程序状态的基类。您可以通过在 AndroidManifest.xml 的标记中指定其名称来提供自己的实现,这将导致在创建应用程序/包的进程时为您实例化该类。

这里

于 2009-10-09T18:03:08.007 回答
1

只是遇到同样的事情,重构了我所有的代码仍然遇到同样的问题,注意到我mApplication在构造函数中设置了局部变量,它应该放在onCreate(),我认为清单中的所有对象可能首先被getApplication()构造设置,因此您需要getApplication()在被调用或被调用之后onCreate()调用。还没有再次重构我所有的代码,看看这是否适用于不同的包(叹气)。

于 2011-01-17T15:04:23.610 回答
-2

我认为,它不是一个null指针,但你想在类中使用的下一个函数AppObject可能是错误的。

于 2014-05-15T13:38:37.707 回答