【问题标题】:get application's context in an Android Library Project?在 Android 库项目中获取应用程序上下文?
【发布时间】:2014-06-16 19:25:36
【问题描述】:

我创建了 2 个项目 1 是 Lib 和 2nd 在测试中。 Lib 项目需要保存一些数据,并且应该共享首选项(没有其他选项)。 Lib 项目是一个 jar,因此其中没有任何上下文内容。

据我了解,这与上下文有关。 Accessing SharedPreferences through static methods

所以我创建了在 Lib 项目中扩展应用程序的类。这是单例类。我在 Lib App mainifiest 文件中声明如下

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

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

【问题讨论】:

  • 你不能只为任何需要上下文来获取上下文的类使用构造函数吗?
  • 将应用的上下文传递给需要上下文的 JAR API
  • @bstar55:我也想过,但它不是可行的解决方案。
  • #@tyczj:抱歉无法理解您的评论...
  • 请发布您的代码、堆栈跟踪,并指出代码中NullPointerException 的来源。

标签: android


【解决方案1】:

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

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

进入您的 testApp 清单。

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

这里是相关帖子的链接:android library project and Activities

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

【讨论】:

  • @user3088564 很高兴听到这个消息!
  • 对此我还有一个问题。是否可以有两个类,一个在 jar 中,一个在应用程序中,它们正在扩展应用程序?
猜你喜欢
  • 2011-11-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 2014-01-30
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多