在Android库项目中获取应用程序的上下文?

时间:2014-06-16 19:25:36

标签: android

我创建了2个项目1是Lib,第2个是Test。 Lib项目需要保存一些数据,它应该是共享首选项(没有其他选项)。 Lib项目是一个jar,所以没有任何上下文内容。

根据我的理解,这与Context有关。 Accessing SharedPreferences through static methods

所以我创建了一个在Lib Project中扩展Application的Class。这是单身类。我在Lib App mainifiest文件中声明如下

<application
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:name="com.test.manager.LibApp" >
 </application>

然后我将这个完整的项目作为lib添加到我的实际项目(testApp)中。当我尝试运行时,我得到空指针异常。

1 个答案:

答案 0 :(得分:2)

问题在于您在Lib清单文件中声明了应用程序的存在(完全被忽略)。你需要搬家:

<application
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:name="com.test.manager.LibApp" >
</application>

进入testApp清单。

长话短说,Context不能源自JAR文件,它必须来自利用库的应用程序。这意味着您必须将App的上下文传递给需要它的JAR API,或者如上所述,在包含的应用程序中声明JAR中定义的应用程序/活动。清单。

以下是相关帖子的链接:android library project and Activities

指出了您在这里遇到的库的限制。