无法为新的Android ActionBar支持找到Theme.AppCompat.Light

时间:2013-07-26 00:15:29

标签: android android-actionbar android-theme android-actionbar-compat

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

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

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

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

我有使用Android应用程序的经验,使用最新版本的支持库和使用API​​ 18(Android 4.3)编译的SDK运行Eclipse。

构建期间收到错误

  

错误:检索项目的父项时出错:找不到与给定名称“@ style / Theme.AppCompat.Light”匹配的资源。 styles.xml / ActBarTest / res / values line 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正在加载,但不是资源。

31 个答案:

答案 0 :(得分:386)

您需要做下一步:

  1. File->Import (android-sdk\extras\android\support\v7)。选择“AppCompat”
  2. Project-> properties->Android.在“添加”部分库中选择“AppCompat”
  3. 就是这样!
  4. 注意:如果您在菜单项中使用“android:showAsAction”,则需要更改前缀android,如示例中所示http://developer.android.com/guide/topics/ui/actionbar.html

答案 1 :(得分:117)

如果像我一样,您正在关注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">
    
  4. 现在应用程序运行正常。

答案 2 :(得分:28)

我将分享我对这个问题的经验。我因此而疯狂,但我发现问题是Eclipse本身的错误,而不是我的代码: In eclipse, unable to reference an android library project in another android project

因此,如果您的C:驱动器中有Android支持库,而您的项目位于计算机上的D:驱动器中,Eclipse将无法正常运行,也无法知道Android支持库的位置(绿色勾选进入红十字会)。要解决此问题,您需要将两个项目移动到同一个硬盘驱动器上。

答案 3 :(得分:25)

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

答案 4 :(得分:23)

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

  1. 确保 APL MP 具有相同的minSdkVersiontargetSdkVersion

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

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

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

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

  4. 1和2得到了对Java类的引用工作正常...但是当我尝试引用manifest.xml时,我仍然看到@style/Theme.AppCompat.Light MP 的错误强> APL 即可。当我执行第3步时,这只会消失。

答案 5 :(得分:16)

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

右键单击应用以转到属性 Right click on app to goto properties

转到依赖关系,然后点击&#39; +&#39;签名并选择库依赖 Go to Dependencies and click on '+' sign and choose library dependency 选择appcompat-v7 Choose appcompat-v7

答案 6 :(得分:12)

IntelliJ IDEA解决方案。

1。运行 Android SDK Manager 并安装最新SDK Android支持图书馆。 SDK和Android支持Libarary的版本应该相同! 23在我的情况下。另一种变体会给你错误。
enter image description here
  2. :将您的IDEA项目的SDK版本更改为您在上一步中安装的最后一个版本。 (ps。你可能不会使用Maven)。
enter image description here

3. 将现有的新模块添加到您的IDEA项目中。
enter image description here

4. 添加AppCompat项目。的 !!!也应该在最后一个SDK下!(ps。在此步骤的任何地方说“是”)
enter image description here

5. 打开主项目模块的设置,然后添加3个项目:

5.1。模块依赖关系。选择 android-support-v7-appcompat
enter image description here

5.2。 2件。图书馆依赖。添加 android-sdk \ extras \ android \ support \ v7 \ appcompat \ libs \ android-support-v4.jar android-support-v4 \ android-support-v7-appcompat.jar
enter image description here

总的来说是:
enter image description here

6。 非常重要!!!
添加主题前缀@style(不是其他!)
enter image description here



Android Studio解决方案。

1。运行 Android SDK Manager 并安装最新SDK Android支持图书馆。 SDK和Android支持Libarary的版本应该相同! 23在我的情况下。另一种变体会给你错误。
enter image description here

2。 build.gradle 旁边添加

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

P.S。如果您是Android开发人员的新手,我强烈建议您转到Android Studio&amp; Gradle现在 - 您将获得管理Android应用程序的最简单方法。

答案 7 :(得分:9)

适用于Android Studio 1.2.2

掉落&#34; android&#34;来自parent属性值:

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

答案 8 :(得分:7)

你需要引用$ ANDROID_SDK / extras / android / support / v7 / appcompat

答案 9 :(得分:5)

对于IntelliJ IDEA或Android Studio:

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

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

如果您有19个平台,请将-v:xx.0+替换为您的构建目标 那一定是这样的:

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

答案 10 :(得分:3)

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

  1. 文件 - &gt;导入(android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. 右键单击项目 - &gt;属性 - &GT;机器人。在部分库&#34;添加&#34;并选择步骤1中包含的库appcompat
  3. 从项目的libs目录中删除所有文件
  4. 将以下文件添加到项目的libs目录<SDK-PATH>\extras\android\support\v13android-support-v13.jar

    如果需要,重启Eclipse。就是这样。你的问题应该消失。

答案 11 :(得分:3)

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

  1. 从SDK管理器删除软件包&#34; Android支持库&#34;和&#34; Android支持存储库&#34;。
  2. 重新安装&#34; Android支持库&#34;和&#34; Android支持存储库&#34;
  3. 删除&#34; android-support-v7-appcompat&#34;或者&#34; appcompat_v7你的项目还有什么。
  4. 从&#34; adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat&#34;
  5. 导入android-support-v7-appcompat
  6. 选择您的项目,然后从文件中选择属性并查找Java Build Path,然后从&#34; Project&#34;选项卡删除其他内容然后添加。你必须看到&#34; android-support-v7-appcompat&#34; ,选择并将其添加到“项目”选项卡。
  7. 检查项目文件下面的project.properties文件,你会看到这样的; 目标=机器人-21 android.library.reference.1 = .. /机器人支撑-V7-程序兼容性 然后检查AndroidManifest.xml文件,如果目标是21或你选择了什么。同时检查库选择与之前选择的库相同。
  8. 希望你能找到解决方案。

答案 12 :(得分:3)

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

答案 13 :(得分: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>

答案 14 :(得分:2)

由于导入电话在Android Studio 1.0.1中有所不同,我无法使用Svyatoslav Lobachs版本。

相反,我下载了#34; Android支持信息库&#34;在SDK Manager中。然后添加

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

build.gradle。为我工作。

答案 15 :(得分:1)

右键单击我的项目并选择关闭不相关的项目后,我遇到了与OP相同的问题。

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

答案 16 :(得分:1)

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

首先,检查&#34; Android支持库&#34;库已安装。 如果没有,请安装它。默认情况下不安装它。 您可以在&#34; Android SDK管理器&#34;中完成所有操作。可在菜单中找到。

(Android SDK Manager - &gt; Extra - &gt; Android支持库)

祝福, (债务人)&lt;&gt;&lt;

答案 17 :(得分:1)

最快的解决方案:

右键点击该项目 - &gt; Android工具 - &gt;添加支持库..

enter image description here

答案 18 :(得分:1)

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

答案 19 :(得分: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"/>

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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

答案 22 :(得分:0)

在我的情况下,问题发生了,因为我想使用不包含所需库的SDK。当我增加分钟。 SDK级别问题消失了。当然直接包括库本身,也应该删除错误。

答案 23 :(得分:0)

如果您已添加 appCompat 库并且还从SDK位置提供了适当的appCompat参考,请尝试&#34;使缓存无效/重新启动&#34;
您可以在Android Studio中的&#34;文件&#34; 菜单中找到它。

答案 24 :(得分:0)

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

答案 25 :(得分:0)

接受的解决方案曾经为我工作过一次,但现在不行。我不得不在新的工作区中重新创建一个同类的hello-world(!),使其编译,然后复制所有目录,包括.hg.hgignorehg diff显示:

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

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

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

答案 26 :(得分:0)

在eclipse中右键单击你的项目 - &gt;选择构建路径,然后选择configure build path。从窗口中选择所需的jar文件并刷新项目

答案 27 :(得分:0)

您最好使用任何名称制作新项目,然后使用appcompat_v7程序制作新项目。

Right Click Project-> properties->Android

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

答案 28 :(得分:0)

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

答案 29 :(得分:0)

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

  1. 右键点击该项目 - &gt;特性
  2. 从内容左侧的表格中选择Java Build Path
  3. 转到“库”选项卡
  4. 添加外部坛子按钮并选择<your sdk path>\extras\android\support\v13\android-support-v13.jar

答案 30 :(得分:0)

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

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