【问题标题】:import .R cannot be resolved when I import actionbarsherlock导入 actionbarsherlock 时无法解析 import .R
【发布时间】:2013-04-06 20:55:27
【问题描述】:

我希望能够在我的 android 项目 (2.3) 中使用操作栏,所以我正在尝试导入 actionbarsherlock 库。但是,我遇到了问题....

我已经导入了库,编辑了我的 android 项目的构建路径以包含该库,还从 ABS /libs 目录中删除了 android-support-v4 jar 并将我的项目的 android-support-v4 复制到ABS /libs 目录来解决jar 不匹配问题。但是,现在我已经完成了所有这些事情,我的项目无法在任何地方解析 myproject.R。我在几乎所有的 .java 文件中导入 myproject.R,它们都有相同的错误(“无法解析导入 com.myproject.R”)。另外,当我清理我的项目时,我在控制台窗口中收到很多错误:

它们都遵循以下原则:

错误:检索项目的父项时出错:找不到与给定名称“android:Theme.Holo.Light”匹配的资源。

据我所知,R 是存储所有布局信息的地方,所以我不知道为什么这甚至是个问题...

我已经解决这个错误好几天了,我非常沮丧,最后决定把它带到堆栈溢出。谢谢大家的帮助!

【问题讨论】:

  • 您不需要将import R. 添加到您的任何Java 文件中。不幸的是,您遇到了一个影响我们许多人的 Eclipse 问题,即更改某些内容并且 Eclipse 抛出了一个摇摆不定的问题。您是否尝试过查看窗口 Window->Show Window->Problems?你也可以尝试清理你的项目。
  • 导入R的问题通常与类路径中的错误或类冲突有关;在这些情况下,sdk 无法创建 R.java - 每次编译项目时都会自动生成 - 。请仔细检查问题选项卡,让我们知道您发现了什么。
  • 导入 R 是错误的 .. 你在导入 R 文件之前尝试清理/重建你的项目吗?
  • 澄清一下,当我说导入 R 时,我的意思是导入“com.portfoliotracker.R”,我很确定它是 Eclipse 生成的 R.java。我很确定这是正确的,因为到目前为止我的项目中一直在这样做。只是现在我已经将 ABS 库作为我的库之一包含在项目中,“import com.blah.R”行会导致错误。
  • @ssantos 在问题选项卡中,所有问题都与 R 相关(当我尝试访问布局中的某些内容时 - R.layout.x,或者当我访问 R.drawable.x 时)

标签: android actionbarsherlock


【解决方案1】:

ActionBarSherlock 是一个库项目

所以在你的eclipse中导入库项目

它是一个图书馆项目。检查右键单击您的库项目。转到属性。

选择安卓。您将看到选中的 Is Library 如下图所示。

将您的库项目添加到您的 Android 项目中。

右键单击您的 Android 项目。转到属性。选择安卓。单击添加按钮将库添加到您的项目。您可以在下图中看到一个绿色勾号。

确保您的 libs 文件夹中有一份 andorid-suuport-v4.jar 副本。

不要导入 R.*;

您将看到两个 R.java,一个用于库项目,一个用于您的 android 项目。 清洁和建造。

【讨论】:

  • 嗨,Raghunandan,感谢您的回答。我完全按照你说的做了,但是在我的 gen 文件夹中,我没有 com.actionsherlock 包,甚至在我自己项目的包中,我也没有 R.java(我只有 BuildConfig.java)。我记得在我有一个 R.java 之前,但是一旦我将 actionsherlock 添加为库,R.java 似乎就消失了。关于为什么会这样的任何想法?
  • @moneydev:“但是一旦我将actionsherlock 添加为库,R.java 似乎就消失了”——清单或资源中有错误——检查 Eclipse 控制台选项卡错误消息。
  • @CommonsWare 在我的 Eclipse 控制台选项卡中,我有很多红色错误消息几乎都在说同样的事情。他们说“...\library\res\values-v14\abs__themes.xml:30: error: Error retrieving parent for item: No resource found that match the given name 'android:Theme.Holo.Dialog'.”
  • @moneydev:您的 Android 构建目标设置得太低。在 Project > Properties 中将其设置为 API 级别 14 或更高。
  • 天啊,非常感谢。终于奏效了!! @CommonsWare 老实说,我无法在网上表达我的感激之情。您可以将其添加为答案,以便我为您投票吗?
【解决方案2】:

编辑了我的 android 项目的构建路径以包含该库

切勿手动修改 Android 项目的构建路径

ActionBarSherlock 是一个 Android 库项目。您需要从您的主应用程序项目中 add a reference 到 ActionBarSherlock 的库项目,并撤消对构建路径的手动更改。


更新

问题的后半部分是您的构建目标设置得太低。构建目标控制您的应用可以使用的 Android 类、资源等版本,如果您使用 ActionBarSherlock,则需要 API 级别 14 或更高。

如果我的项目构建目标为 4.0,我还能在运行 Android 2.3 的模拟器/手机上运行它吗?

是的。将您的 android:minSdkVersion 设置为 10 或更低。如果您不小心尝试使用高于 minSdkVersion 的类、方法等,Eclipse(通过 Lint)会对您大喊大叫,即使由于您的构建目标它们是合法的。

【讨论】:

  • CommonsWare,感谢您的帮助!我确实添加了一个参考(属性> android>添加库)。但是我确实右键单击项目>构建路径>配置>项目>添加>选择actionsherlock库,我不应该这样做吗?
  • @moneydev:“我不应该那样做吗?” -- 对,你不应该那样做。
  • 好的,所以我去构建路径把它拿出来了。但我仍然有所有这些无法解决 R 错误。仅供参考,如果我在项目属性中删除 ABS 库,一切都很好(/gen 中有一个 R.java)。但后来我在属性中添加了 ABS 库,并应用(如上面的帖子 2 所述),然后我得到所有这些错误泛滥......
  • @moneydev:您的清单或资源中有错误。检查 Eclipse 控制台选项卡中的错误消息。
  • 感谢您迄今为止的帮助。我回复了您对上述帖子的上述评论。我在 Eclipse 控制台中收到错误消息。他们基本上都说它无法为一堆看起来像是布局/ui相关的东西检索父级或其他东西
【解决方案3】:

我发现 如果项目的 AndroidManifest.xml 中的 minSDKVersion 低于库, 它也使项目成为错误构建 R.java

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多