【问题标题】:Android library not pulling its resources through to other projectsAndroid 库没有将其资源拉到其他项目
【发布时间】:2014-10-26 18:01:31
【问题描述】:

我有一个 Android 项目,我正试图将其制作成一个库。我收到此代码引发的异常:

_buttonStart = (Button) findViewById(R.id.buttonStart);

我得到的例外是:

java.lang.NoSuchFieldError: com.xxx.libraryname.R$id.buttonStart

Android 文档似乎明确表示该库应该能够访问这些资源:

“例如库项目中的源代码可以通过其R类访问自己的资源。”

当我查看库的/gen/com.xxx.libraryname/R.java/R/id/ 时,buttonStart 就在那里。但是当我查看主项目的/gen/com.xxx.libraryname/R.java/R/id 时,它不是。

我已经做了一个清理。

【问题讨论】:

  • 想通了。这两个项目都有一个“main.xml”文件。重命名了库的 main.xml 文件,一切正常。
  • 是的,如果你有同名的资源,宿主项目获胜。最好为库提供唯一的资源名称,可能通过一些前缀表示法,这样就不会发生意外冲突。可能仍然存在 故意 冲突,其中主机专门尝试替换资源,在这种情况下,主机必须以图书馆接受的方式这样做(例如,维护相同的小部件与布局的 ID 相同)。
  • @DanJameson 你能在答案部分添加解决方案吗?
  • 发布答案,以便该问题不再无人回答。

标签: android resources


【解决方案1】:

您的库项目也具有与您的主项目相同的名称布局 main.xml。

如果两者具有相同的布局名称,Android 将优先考虑宿主项目,在这种情况下 "main.xml" 最好的方法是使用一些前缀表示法,这样就不会发生意外冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多