android - Android项目库中的类扩展应用程序?

标签 android

我有一个项目(在 Eclipse 中),我已经把它变成了一个 Android 项目库,以便在另一个类似的项目中重用一些代码。我想我已经搬起石头砸自己的脚了,但是我遇到了错误:

Unable to start activity ComponentInfo{com.test.scroller1/com.lib.scrolltest.ScrollTestActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to com.lib.scrolltest.resAppVars

com.lib.scrolltest 是我的项目库,它实例化了一个扩展应用程序 (resAppVars) 的类。在我调用的 onCreate() 方法中:

mRav = (resAppVars) getApplicationContext ();

这样,我可以在 mRav 对象中使用方法,否则这些方法在其他类中会是很多重复代码(例如将查询传递给返回结果 ArrayList 的通用选择语句)。

这里有什么问题?看来我在实现 Application 类的方式上遇到了限制。

最佳答案

调用 getApplicationContext() 返回 Application当前应用程序的对象(即拥有 onCreate() 正在其中运行的 Activity 的应用程序)。

除非你在做一些奇怪的事情,否则你无法选择哪个 Application使用类。 Application 的文档中甚至有一条注释说不要这样做:

There is normally no need to subclass Application. In most situation, static singletons can provide the same functionality in a more modular way. If your singleton needs a global context (for example to register broadcast receivers), the function to retrieve it can be given a Context which internally uses Context.getApplicationContext() when first constructing the singleton.

您应该只在您的库项目中创建一个常规共享类。或者,如果您不需要库项目提供的特殊功能,您也可以只使用常规 .jar 文件。

如果您需要共享状态,只需将其设为单例即可。 ;)

关于android - Android项目库中的类扩展应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649866/

相关文章:

Android Vector Drawable <text> 不支持,<tspan> 不支持

java - 壁纸未缩放到设备的显示屏

android - ADT Logcat 过滤器消失并停止工作

android - 从通知进入正在运行的应用程序时,如何完成当前 Activity

android - ubuntu14.04构建android4.4调制解调器报错

android - 在 Kotlin 中将 SVG 文件从 API 加载到 Android 中的 ImageView 中

java - 第一次按下时 KEYCODE_BACK 不起作用

从后台返回时,查询时的 Android Firestore 快照监听器需要很长时间(1 分钟)才能从网络更新

php - JSON解析android中共享首选项期间出错

java - Android webView不显示地理位置