【问题标题】:Android: Drawable from library project to appAndroid:从库项目到应用程序的可绘制
【发布时间】:2012-06-21 16:35:06
【问题描述】:

我目前正在为android创建一个支付SDK,因此我想根据不同的情况将sdk/library项目中的一些图像发送到实际应用程序中。我希望应用程序的用户使用drawables,但我不希望他们手动设置(即直接从SDK的drawable文件夹中获取),SDK应该根据不同情况自动选择要使用的图像。

目前我拥有的是一个 DAO 类,它在初始化时有类似的东西:

case (MASTERCARD):
    this._logo = getResources().getDrawable(R.drawable.mastercard_securecode);

然后在应用程序中,我希望能够获取该可绘制对象并在 ImageView 中使用它,如下所示:

img.setImageDrawable(DAOObject.getLogo());

但是当我运行这个时,我得到了

06-15 20:25:18.933: W/dalvikvm(625): VFY: 无法解析 LPackagePath/R$drawable 中的静态字段 6 (mastercard_securecode);

由于上述错误,getLogo 将返回空指针异常。

任何人都知道如何正确实现这一点,所以我没有收到上述错误,并且仍然能够以这种方式实现它,应用程序可以动态发送可绘制对象?

非常感谢任何帮助!

【问题讨论】:

  • switch case语句中的setter方法在哪里?有些像 DAOObject.setLogo()
  • switch case语句放在DOAObjects构造函数中,所以我直接访问本地的_logo变量就可以了。
  • 您使用的是最新版本的 Android SDK 工具吗?
  • 是的。我正在将库项目作为 jar 文件加载到应用程序的 libs 文件夹中。库项目是包含实际资源和 switch 语句的项目。
  • 如何从库项目中生成 jar 文件?请注意,生成的一个 Eclipse 不包含 R.class,它仅在 Eclipse 清理/构建您的应用程序项目时临时使用,并且不假定用作完整的自包含 jar 文件。

标签: android drawable android-imageview android-image


【解决方案1】:

好吧,我终于想通了。

问题确实是上下文。我需要将上下文从应用程序传递到 SDK,然后我可以通过执行正确获取图像

context.getResources().getDrawable(R.drawable.mastercard_securecode);

其次,我需要在库项目中导入 jar 文件,然后在第二个库项目中导入图像,以便 SDK 本身是封闭源代码,但我仍然有可用的资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2014-09-09
    • 1970-01-01
    相关资源
    最近更新 更多