找不到适用于新Android ActionBar支持的Theme.AppCompat.Light


354

我正在尝试实施几天前Google发布的新的ActionBar支持库。过去,我已经成功地使用Google Developer的“ 支持库设置”页上列出的相同方法成功实现了ActionBarSherlock,并使用了如何包含资源的指南(类似于ActionBarSherlock的用法)。我也将库项目也作为库加载到了自己的项目中。

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

我甚至尝试绕过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问题

style.xml

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

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


1
尝试清理项目,也许您需要重新加载依赖项,以便AppCompact的样式也可以重新加载
TheWizKid95

2
@ TheWizKid95我对要实现的应用程序和库进行了清理。根据Eclipse,没有人导致任何更改的代码,并且没有解决任何问题。
布兰登·恩里克兹

您是否已在资源中添加了支持库?将jar添加到库是不够的。
加布里埃尔·马里奥蒂

@GabrieleMariotti是的,我按照Google的指示添加了资源以及项目库。
布兰登·恩里奎兹

对我有用的是将其作为项目添加到工作区。只是导入jar并将其添加到buildpath中是行不通的。
约翰

Answers:


386

接下来,您需要执行以下操作:

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

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


65
这对我不起作用。我完全按照这里写的内容进行操作,但最终得到数百个找不到与给定名称错误匹配的资源。资源,缺少的是API 11及更高版本中包含的样式,但是该东西应该可以在API 7中使用。是否缺少某些连接!
apocalypz 2013年

5
有一个类似的问题,Theme.AppCompat.Light.NoActionBar主题在我的appcompat库中不存在。
JMRboosties

9
在“文件导入”下,找不到“ android-sdk”。我只看到“ andoird”。任何人?
shahar eldad 2014年

2
apocalypz,我认为您缺少资源,因为您导入的库没有资源。这里是“与资源添加库”的链接, developer.android.com/tools/support-library/...
Hades200621

1
按照上述步骤+将sdk \ extras \ android \ support \ v13android-support-v13.jar添加到项目的libs目录中,即可解决此问题。
Wasim A. 2014年

119

如果像我一样,如果您遵循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">

现在,应用程序应该可以正常运行了。


11
是的,这对我有用。注意的关键是,在父属性“ android:”中以主题(样式)构建的前缀,而没有此前缀的值引用您自己的样式,或您链接到的任何库中的样式,例如android-support -v7-appcompat。
John Bentley 2014年

没有res/values/styles.xml新的Android项目。至少不是在使用时创建的android create project
weberc2 2014年

使用向导创建项目时,选择全屏应用程序并隐藏控件
即可

8
对我无济于事...已经浪费了4个小时。我仍然没有找到与给定名称匹配的资源(在“主题”处,值为“ @ style / Theme.AppCompat.Light”)。刚要放弃。
c.fogelklou 2014年

2
我只是换了另一种方式,确实这就是我项目中必须要做的事情。
约翰

28

如果您修改项目结构模块,则这是在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" />

1
请记住,有2个* .iml文件。带有库条目的条目包含在项目的子文件夹中,并具有小写的文件名。
大卫·道格拉斯

2
这解决了我的问题。将appcompat添加到内部build.gradle的依赖项中。我很遗憾地说我做了手动编辑以匹配另一个破坏了事情的项目!
JJ_Coder4Hire 2014年

28

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

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


4
谢谢。我的情况就是这样。在第1步(文件->导入(android-sdk \ extras \ android \ support \ v7。选择“ appcompat”)上,需要选中“复制到工作区”。

我面临类似的问题。非常感谢,这确实很棘手
SILINIK

AndroidStudio中存在相同问题。我只花了3个小时来解决这个问题。谢谢!
鲁宾·马丁内斯(Ruben Martinez)2014年

朱普 可以确认这一点。.IntellJ有完全相同的问题,至少与AppCompat ...在此问题上浪费了4个小时。
puelo 2014年

这也是我的解决方案。将appcompat_v7项目复制到与目标项目相同的驱动器并将其添加为lib使其可以正常工作。
MayaPosch 2015年

23

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

  1. 确保APLMP具有相同的minSdkVersiontargetSdkVersion

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

    1. 进入MP的 “属性> Java构建路径” ,然后

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

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

1和2使对Java类的引用工作正常...但是manifest.xml,当尝试从APL进行引用时,我仍然看到for MP中的错误。只有在执行步骤3时,这才消失。@style/Theme.AppCompat.Light


9
绝对使用“ @ style / Theme.AppCompat ...”而不是“ @android:style / Theme.AppCompat ...”。这个答案的加号3解决了我的问题。
BeccaP

第2点似乎不正确。这导致生成错误日志消息所描述的,在这里固定:stackoverflow.com/questions/18421274/...
寰宇一家

18

有点晚了,但是这是我如何在AndroidStudio中完成它!

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

转到Dependencies并单击'+'号并选择库依赖关系 转到依赖项,然后单击“ +”号并选择库依赖项 选择appcompat-v7 选择appcompat-v7


12

IntelliJ IDEA解决方案。

1.运行Android SDK Manager并安装最新的SDKAndroid Support Libarary。SDK和Android Support Libarary的版本应该相同!以我为例23 另一个变体会给您错误。2.将IDEA项目的SDK版本更改为上一步中安装的最后一个版本。(请注意,您可能不使用Maven)。
在此处输入图片说明

在此处输入图片说明

3.将来自现有资源的新模块添加到您的IDEA项目中。
在此处输入图片说明

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

5.打开主项目模块的设置,然后添加以下三个依赖项:

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旁边添加

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

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


我曾经在Android中找到关于Android的最佳答案
Alex Jolig

10

对于Android Studio 1.2.2

parent属性值中删除“ android” :

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

7

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


您介意如何更精确地引用它?我已经引用了确切的文件夹作为Android开发人员上所述的说明。严格按照其网站上的说明进行操作。我可以说它至少部分地被引用了,因为ActionBarActivity被扩展而没有错误。
布兰登·恩里奎兹

3
appcompat作为Android库的参考,您的主要项目资源可以从appcompat中找到主题
Crossle Song

做到了。我以前是在Java构建路径中进行的。
布兰登·恩里奎兹

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.+"
}

3

请遵循@rcdmk的步骤。在您的项目中删除android support v4.jar。它与appcompat中找到的新更新版本冲突。


3

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

  1. 从SDK管理器中删除软件包“ Android支持库”和“ Android支持存储库”。
  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 Build Path,然后从“项目”选项卡中删除其他内容,然后添加。并且您必须看到“ android-support-v7-appcompat”,将其选中并添加到“项目”标签中。
  6. 检查Project文件下方的project.properties文件,您将看到如下所示;target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat,然后检查AndroidManifest.xml文件是否目标为21或您选择的其他内容。还要检查与之前选择的库相同的库参考。

希望您能找到解决方案。


1
帮助我的是使用SDK管理器升级了我的Android支持库,从工作区中删除了旧的appcompat库,重新导入了新更新的appcompat库(并复制到工作区中),然后进行了构建。
Varun

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。而已。您的问题应该消失了。


很高兴它能帮助某人:)
Wasim A.

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>

2

由于Android Studio 1.0.1中的“导入”语言不同,因此无法使用Svyatoslav Lobachs版本。

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

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

build.gradle。为我工作。



1

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

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


1

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

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

(Android SDK管理器->附加-> Android支持库)

祝福(债务人)<> <


1

最快的解决方案:

右键单击项目-> Android工具->添加支持库。

在此处输入图片说明


0

我为此犯了一个非常愚蠢的错误。当我每次都遇到相同的错误时,我不知道出了什么问题。然后让我感到震惊的是,一旦我关闭了工作空间中的所有项目,那便是所有问题开始的时候。因此,只需检查您的“ appcompat_v7”是否未关闭。如果是的话,双击打开项目,然后清理并重新构建项目。就我而言,错误消失了。编码愉快!


0

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

  1. 右键单击项目->属性
  2. 从内容的左侧表中选择Java Build Path
  3. 转到库标签
  4. 添加外部罐子按钮并选择 <your sdk path>\extras\android\support\v13\android-support-v13.jar

0

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

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

0

我不知道你们中有多少人注意到这一点。支持库“ appcompat_v7”,您的项目应该在同一目录(我的意思是工作空间目录)中。不要清理项目,直到项目没有错误为止,否则您将无法使用R.java


0

您最好使用任何名称创建新项目,然后使用appcompat_v7使该程序成为new。

Right Click Project-> properties->Android

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


0

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


0

公认的解决方案曾经为我工作过,但现在不是。我必须在新的工作区中重新创建相同类型的(hello)世界,进行编译,然后复制所有目录,包括.hg.hgignorehg diff显示:

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

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

看来Eclipse希望针对API 21进行编译,而对API 19则无法执行任何操作。


0

如果添加了appCompat库,并且还从SDK位置给出了正确的appCompat参考,请尝试“使缓存无效/重新启动”
您可以从Android Studio中的“文件”菜单中找到它。


0

就我而言,出现了问题,因为我想使用不包含所需库的SDK。当我增加分钟。SDK级别的问题消失了。当然,直接包括库本身,也应该消除该错误。



0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.