361

我正在尝试实现几天前 Google 发布的新ActionBar支持库。过去,我使用 Google 开发人员支持库设置页面上列出的相同方法成功实现了 ActionBarSherlock,没有任何问题 - 使用有关如何包含资源的指南(类似于 ActionBarSherlock 的做法)。我也将库项目作为库加载到我自己的项目中。

我可以告诉图书馆加载正常。当我没有在我的 MainActivity.java 上扩展 Activity 时,我将其更改为扩展 ActionBarActivity(根据 Google 的说明),没有发生错误 - 并且它正确导入。

我什至尝试绕过 style.xml 文件并将@style/Theme.AppCompat.Light两者直接添加到 AndroidManifest.xml 中,并且<application>所有尝试都会导致相同的错误。<activity>android:theme="@style/ThemeAppCompat.Light"

现在的问题是我无法让它改变主题,更不用说构建而不抛出错误了。下面是我收到的错误,然后是我更改为使用新主题的 style.xml 文件。

我在使用 Android 应用程序方面有中等经验,并且正在使用最新版本的支持库和使用 API 18 (Android 4.3) 编译的 SDK 运行 Eclipse。

构建期间收到错误

错误:检索项目的父项时出错:找不到与给定名称“@style/Theme.AppCompat.Light”匹配的资源。styles.xml /ActBarTest/res/values 第 3 行 Android AAPT 问题

样式.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.ProsoftStudio.ACTest" parent="@style/Theme.AppCompat.Light">
    </style>
</resources>

有什么建议么?这从来都不是 ActionBarSherlock 的问题。我想努力使用这个新的支持库。似乎 .jar 正在加载,但不是资源。

4

31 回答 31

386

您需要执行以下操作:

  1. File->Import (android-sdk\extras\android\support\v7). 选择“AppCompat”
  2. Project-> properties->Android. 在“添加”部分库中,选择“AppCompat”
  3. 就这些!

注意:如果您在菜单项中使用“android:showAsAction”,则需要更改前缀 android,如示例http://developer.android.com/guide/topics/ui/actionbar.html

于 2013-07-26T12:21:48.520 回答
121

如果像我一样,您正在遵循http://developer.android.com/training/basics/actionbar/setting-up.html上的 Android 教程并不断收到此错误,请尝试更改所有文件AppBaseTheme中的样式。styles.xml详细地:

  1. 在文件中res/values/styles.xml更改行:

    <style name="AppBaseTheme" parent="android:Theme.Light">
    

    至:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
    
  2. 在文件中res/values-v11/styles.xml更改行:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
    

    至:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
    
  3. 在文件中res/values-v14/styles.xml更改行:

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
    

    至:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    

现在应用程序应该运行良好。

于 2013-12-29T22:21:50.317 回答
29

如果您修改项目结构模块,Android Studio 中可能会出现此问题。在这种情况下,您可能需要再次添加依赖项。在文本编辑器中编辑“build.gradle”文件以包含所需的依赖项:

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

这应该使用 lib 组件更新您的“{your_project_name}.iml”文件:

<orderEntry type="library" exported="" name="appcompat-v7-19.0.1" level="project" />
于 2014-03-15T17:42:47.070 回答
28

我将分享我对这个问题的经验。因为这个我快疯了,但我发现问题是 Eclipse 本身的错误,而不是我的代码: 在 Eclipse 中,无法在另一个 android 项目中引用一个 android 库项目

因此,如果您的 C: 驱动器中有 Android 支持库,并且计算机上的 D: 驱动器中有您的项目,Eclipse 将无法正常运行并且不会知道 Android 支持库在哪里(绿色勾号变成红色叉号)。要解决这个问题,您需要将两个项目移动到同一个硬盘上。

于 2013-08-25T12:54:01.297 回答
23

我在 Eclipse 中使用 Android 支持库 ( APL ) 项目和主项目 ( MP ) 执行了以下操作:

  1. 确保APLMP具有相同的minSdkVersiontargetSdkVersion.

  2. 添加APL作为MP的构建依赖项:

    1. 进入MP的“Properties > Java Build Path” ,然后

    2. 选择“项目”选项卡并添加APL

  3. MP的属性中,在“Android”下,在 library 下添加了对APL的引用。

1 和 2 得到了对 Java 类的引用工作正常......但是我在尝试从APL引用时仍然看到manifest.xmlfor MP中的错误。当我执行第 3 步时,这种情况才消失。@style/Theme.AppCompat.Light

于 2013-08-10T21:51:11.097 回答
18

它有点晚了,但这是我在 AndroidStudio 中完成它的方法!

右键单击应用程序以转到属性 右键单击应用程序以转到属性

转到依赖项并单击“+”号并选择库依赖 转到依赖项并单击“+”号并选择库依赖项 项选择 appcompat-v7 选择 appcompat-v7

于 2015-06-26T21:16:30.080 回答
12

IntelliJ IDEA 解决方案。

1.运行Android SDK Manager并安装最新的 SDKAndroid Support Libarary。SDK和Android Support Libarary的版本应该是一样的!23 在我的情况下。另一个变体会给你错误。2.将您的 IDEA 项目的 SDK 版本更改为您在上一步中安装的最后一个版本。(ps。你可能不会使用 Maven)。
在此处输入图像描述

在此处输入图像描述

3.将现有源中的新模块添加到您的 IDEA 项目中。
在此处输入图像描述

4.添加AppCompat项目。!!!也应该在最后一个SDK下! (ps。在这一步的任何地方说“是”)
在此处输入图像描述

5.打开你的主项目模块的设置并添加下 3 个依赖项:

5.1。 模块依赖。选择android-support-v7-appcompat
在此处输入图像描述

5.2. 2个 库依赖项。添加android-sdk\extras\android\support\v7\appcompat\libs\android-support-v4.jarandroid-support-v4\android-support-v7-appcompat.jar
在此处输入图像描述

总共将是:
在此处输入图像描述

6. 很重要!!!
添加带有前缀@style(不是另一个!)的主题。
在此处输入图像描述



Android Studio 解决方案。

1.运行Android SDK Manager并安装最新的 SDKAndroid Support Libarary。SDK和Android Support Libarary的版本应该是一样的!23 在我的情况下。另一个变体会给你错误。
在此处输入图像描述

2.在build.gradle后面添加next

dependencies {
    compile 'com.android.support:appcompat-v7:23.0.1'
} 

PS 如果您是 Android 开发新手,我强烈建议您立即迁移到 Android Studio 和 Gradle - 您将获得管理您的 android 应用程序的最简单方法。

于 2015-08-28T09:13:14.510 回答
10

对于 Android Studio 1.2.2

parent从属性值中删除“android” :

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
于 2015-06-19T18:12:21.087 回答
7

你需要参考 $ANDROID_SDK/extras/android/support/v7/appcompat

于 2013-07-26T05:40:38.483 回答
5

对于 IntelliJ IDEA 或 Android Studio:

将此添加到 app.gradle 构建文件

dependencies {
    compile "com.android.support:appcompat-v7:21.0.+"
} 

用您的构建目标替换 -v:xx.0+,如果您有 19 个平台,那么它必须像:

dependencies {
    compile "com.android.support:appcompat-v7:19.0.+"
}
于 2014-12-29T05:40:14.273 回答
3

按照@rcdmk 的步骤操作。删除项目中的 android support v4.jar。它与 appcompat 中的新更新版本冲突。

于 2013-10-17T10:57:48.320 回答
3

我遇到了同样的问题,浪费了 4-5 个小时来解决问题。我的问题解决了;

  1. 从 SDK 管理器中删除包“Android Support Library”和“Android Support Repository”。
  2. 重新安装“Android 支持库”和“Android 支持库”
  3. 删除“android-support-v7-appcompat”或“appcompat_v7 你在项目中还有什么。
  4. 从“adt-bundle-windows-x86_64-20140702\sdk\extras\android\support\v7\appcompat”导入 android-support-v7-appcompat
  5. 选择您的项目并从文件中选择属性并找到 Java 构建路径,然后从“项目”选项卡中删除其他内容,然后添加。并且您必须看到“android-support-v7-appcompat”,选择并将其添加到项目选项卡。
  6. 检查您的项目文件下方的 project.properties 文件,您将看到如下所示;target=android-21 android.library.reference.1=../android-support-v7-appcompat 然后检查 AndroidManifest.xml 文件,如果目标是 21 或您选择的其他内容。还要检查与您之前选择的图书馆相同的图书馆参考。

希望你能找到你的解决方案。

于 2014-10-30T20:13:38.103 回答
3

我的问题通过以下步骤解决

  1. 文件->导入 (android-sdk\extras\android\support\v7\appcompat)

  2. 右键单击项目-> 属性-> Android。在“添加”部分库中,选择步骤 1 中包含的库 appcompat

  3. 从项目的 libs 目录中删除所有文件

  4. 将以下文件添加到项目的 libs 目录<SDK-PATH>\extras\android\support\v13android-support-v13.jar

    如果需要,重新启动 Eclipse。而已。你的问题应该消失了。

于 2014-11-24T17:17:46.567 回答
2

作品:

<style name="MyApp" parent="Theme.AppCompat.Light">
</style>
<style name="MyApp" parent="@style/Theme.AppCompat.Light">
</style>
<style name="Theme.AppCompat.Light.MyApp">
</style>
于 2014-11-18T22:40:53.387 回答
2

由于 Android Studio 1.0.1 中的 Import 对话框不同,我无法让 Svyatoslav Lobachs 版本正常工作。

相反,我在 SDK 管理器中下载了“Android 支持存储库”。然后添加

dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}

build.gradle. 为我工作。

于 2015-01-26T20:02:11.123 回答
1

http://developer.android.com/tools/support-library/setup.html有一个错误。在 Property->Java build path->'Project' 和 'Order and Export' 中,不应该有任何 jar。删除它们并检查“Android Private Libraries”和“Android Dependencies”解决了我的问题。

于 2014-01-25T18:27:46.760 回答
1

右键单击我的项目并选择Close Unrelated Projects后,我遇到了与 OP 相同的问题。

就我而言,我通过重新打开appcompat_v7项目并清理/重建这两个项目来解决问题。

于 2014-12-15T17:37:43.473 回答
1

截至 2015 年 1 月 14 日,在 HelloWorld 等项目期间,当 Eclipse(Luna)/AndroidSDK(不是 Android Stduio)与最新的工具和库一起使用时,我遇到了这种情况。当我安装这些工具并使 HelloWorld 成为第一个应用程序时,我接受了所有默认设置。-这是我的问题。

首先,检查是否安装了“Android Support Library”库。如果没有,请安装它。默认情况下不安装它。您可以在菜单中的“Android SDK 管理器”中完成所有操作。

(Android SDK 管理器 -> 额外 -> Android 支持库)

祝福,(债务人)<><

于 2015-01-13T18:11:06.500 回答
1

最快的解决方案:

右键项目->Android工具->添加支持库..

在此处输入图像描述

于 2015-01-14T15:28:15.257 回答
0

我为此犯了一个非常愚蠢的错误。当我每次都遇到同样的错误时,我无法弄清楚出了什么问题。然后它点击我,一旦我关闭了我工作空间中的所有项目,那是所有问题开始以来的时间。所以只需检查您的“appcompat_v7”是否未关闭。如果是,则通过双击打开项目,然后再次清理并构建您的项目。就我而言,错误消失了。快乐编码!

于 2014-09-21T07:09:41.880 回答
0

我不确定发布此问题时是否提供 v13 支持库,但如果有人仍在苦苦挣扎,我已经看到添加android-support-v13.jar将解决所有问题。我是这样做的:

  1. 右键单击项目-> 属性
  2. 从左侧目录中选择 Java Build Path
  3. 转到库选项卡
  4. 添加外部罐子按钮并选择<your sdk path>\extras\android\support\v13\android-support-v13.jar
于 2014-10-27T14:31:15.297 回答
0

对于 Android Studio 或 IntelliJ,您需要做的就是更新 gradle.build 中的依赖项。我使用了以下内容:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.2'
}
于 2014-11-27T04:17:06.233 回答
0

我不知道你们有多少人注意到了这一点。支持库“appcompat_v7”和你的项目应该在同一个目录(我的意思是工作区目录)。不要清理你的项目,直到它没有错误,否则你将很难使用 R.java

于 2015-03-16T15:04:45.067 回答
0

你最好用任何名称创建新项目,然后使用 appcompat_v7 那个程序 make new 。

Right Click Project-> properties->Android

在部分库中Add,选择库 appcompat。

于 2015-04-23T05:49:59.367 回答
0

在eclipse中右键单击您的项目->选择构建路径,然后选择配置构建路径。从窗口中选择您想要的 jar 文件并刷新您的项目

于 2015-05-25T08:14:58.637 回答
0

接受的解决方案曾经对我有用,但现在不行。我不得不在一个新的工作空间中重新创建一个相同类型(!)的 hello-world,让它编译,然后复制所有目录,包括.hg.hgignore. hg diff显示:

-        android:targetSdkVersion="19" />
+        android:targetSdkVersion="21" />

Binary file libs/android-support-v4.jar has changed

看起来 Eclipse 想要为 API 21 进行编译,并且无法对 API 19 做任何事情。黑暗。

于 2015-06-18T11:02:52.980 回答
0

如果您添加了appCompat库并且还从 SDK 位置提供了 appCompat 的正确引用,请尝试"invalidate caches/Restart"
您可以从Android Studio 的“文件”菜单中找到它。

于 2015-07-29T02:39:15.680 回答
0

就我而言,问题发生是因为我想使用不包含所需库的 SDK。当我增加最小值时。SDK级别的问题消失了。当然,直接包括库本身,也应该消除错误。

于 2015-12-31T12:53:26.140 回答
0

忘记了一切。只需使用使用 Android Studio 下载的 appcompat 库即可。它有所有缺失的定义。无论您是否在 Eclipse 中使用。

于 2016-02-08T13:36:30.857 回答
0

我遇到了同样的问题,即使在导入/添加答案中提到的 jar/库之后,它也无法解决错误。出于沮丧,我刚刚创建了一个新的工作区并创建了一个新的 android 项目,它自动导入了 appcompat_v7,并且在清理和构建时没有错误。不必手动导入单个 jar/库。仅供参考,我使用的是 eclipse Mars.1 Release (4.5.1),每次创建新的 android 项目时都面临完全相同的问题。

于 2016-02-15T22:44:24.623 回答
0

我有错误消息:

错误:(18) 检索项目的父项时出错:找不到与给定名称“Theme.AppCompat.NoActionBar”匹配的资源。

使用此配置:

  compileSdkVersion 23
  buildToolsVersion "23.0.1"

我必须改变主题:

 <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"/>

至:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"/>
于 2016-03-16T23:38:19.627 回答