为新的Android ActionBar支持找不到Theme.AppCompat.Light
我正在尝试实施几天前由Google发布的新的ActionBar支持库。 在过去,我已经成功实现了ActionBarSherlock,没有任何问题,使用Google开发者支持库设置页面上列出的同样的方法 – 使用关于如何包含资源(类似于ActionBarSherlock做的)的指南。 我把库项目作为一个库加载到我自己的项目中。
我可以告诉图书馆加载正常。 而不是在我的MainActivity.java上扩展Activity时,我将其更改为扩展ActionBarActivity(按照Google的说明),不会发生任何错误 – 并且正确导入。
我什至尝试绕过style.xml文件,并添加@style/Theme.AppCompat.Light
直接在AndroidManifest.xml中与android:theme="@style/ThemeAppCompat.Light"
<application>
和<activity>
尝试导致相同的错误。
现在的问题是我不能改变主题,更不用说甚至没有抛出错误的构建。 下面是我收到的错误,后面是我更改为使用新主题的style.xml文件。
我有与Android应用程序工作经验丰富的经验,并运行与支持库和SDK编译与API 18(Android 4.3)的最新版本的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加载,但不是资源。
你需要做下一步:
-
File->Import (android-sdk\extras\android\support\v7)
。 选择“AppCompat” -
Project-> properties->Android.
在部分库“Add”中选择“AppCompat” - 就这些!
注意:如果您在菜单项中使用“android:showAsAction”,则需要更改前缀android,如示例http://developer.android.com/guide/topics/ui/actionbar.html
如果像我一样,在http://developer.android.com/training/basics/actionbar/setting-up.html上关注Android教程,并且不断收到此错误,请尝试更改所有;styles.xml
的AppBaseTheme
样式文件。 详细:
-
在文件
res/values/styles.xml
更改该行:<style name="AppBaseTheme" parent="android:Theme.Light">
至:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
-
在文件
res/values-v11/styles.xml
更改该行:<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
至:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
-
在文件
res/values-v14/styles.xml
更改行:<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
至:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
现在应用程序应该运行良好。
我将分享我的经验与这个问题。 因为这个,我疯了,但我发现这个问题是Eclipse本身的问题,而不是我的代码: 在eclipse中,无法在另一个android项目中引用android库项目
因此,如果您的C:驱动器中有Android支持库,并且计算机上的D:驱动器中有项目,则Eclipse将无法正常运行,并且不会知道Android支持库的位置(绿色勾号变成红色叉号)。 为了解决这个问题,你需要将两个项目移到同一个硬盘上。
我使用Android支持库( APL )项目和主项目( MP )在Eclipse中完成了以下工作:
-
确保APL和MP具有相同的
minSdkVersion
和targetSdkVersion
。 -
添加APL作为MP的构建依赖项:
-
进入MP的 “Properties> Java Build Path”,然后
-
选择“项目”选项卡并添加APL 。
-
-
在MP的属性中,在“Android”下,在库下添加了对APL的引用。
1和2得到的Java类的引用工作正常…但是当我试图从APL引用@style/Theme.AppCompat.Light
时,我仍然在MP的manifest.xml
看到错误。 当我执行步骤3时,这只会消失。
如果您修改了“项目结构模块”,则这是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" />
它有点迟了,但这里是我在AndroidStudio中完成的!
右键点击应用程序转到属性
转到依赖关系,然后点击“+”号并选择库依赖关系 选择appcompat-v7
IntelliJ IDEA解决方案。
1.运行Android SDK Manager并安装最新的SDK和Android支持Libarary 。 SDK和Android支持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.jar和android-support-v4 \ android-support-v7-appcompat.jar
总共将是:
6. 非常重要!
添加前缀@style的主题(不是另一个!) 。
Android Studio解决方案。
1.运行Android SDK Manager并安装最新的SDK和Android支持Libarary 。 SDK和Android支持Libarary的版本应该是一样的 ! 23在我的情况。 另一个变种会给你的错误。
2.添加到build.gradle旁边
dependencies { compile 'com.android.support:appcompat-v7:23.0.1' }
PS如果你是Android开发新手,我强烈推荐你现在转移到Android Studio&Gradle – 你会得到最简单的方式来管理你的Android应用程序。
对于Android Studio 1.2.2
从parent
属性值中删除“android”:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
您需要引用$ ANDROID_SDK / extras / android / support / v7 / appcompat
对于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.+" }
按照@rcdmk的步骤操作。 删除您项目中的android支持v4.jar。 它与在appcompat中找到的新的更新版本冲突。
我的问题通过以下步骤解决
- File-> Import(android-sdk \ extras \ android \ support \ v7 \ appcompat)
- 右键单击Project-> properties-> Android。 在“添加”部分库中,选择步骤1中包含的库appcompat
- 从项目的libs目录中删除所有文件
-
将以下文件添加到项目的libs目录
<SDK-PATH>\extras\android\support\v13android-support-v13.jar
如果需要,重新启动Eclipse。 而已。 你的问题应该消失。
我有同样的问题,浪费我的4-5小时的解决方案。 我的问题解决了;
- 从SDK管理器删除包“Android支持库”和“Android支持库”。
- 重新安装“Android支持库”和“Android支持库”
- 删除“android-support-v7-appcompat”或“appcompat_v7你还有什么你的项目。
- 从“adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat”导入android-support-v7-appcompat
- 选择你的项目,然后从文件中选择属性,找到Java Build Path,然后从“Project”选项卡中删除其他内容,然后添加。 你必须看到“android-support-v7-appcompat”,选择并将其添加到“项目”选项卡。
- 检查你的项目文件下面的project.properties文件,你会看到这样的; target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat然后检查AndroidManifest.xml文件,如果目标是21或者你选择了什么。 同时检查与以前选择的库相同的库参考。
希望你会找到你的解决方案。
作品:
<style name="MyApp" parent="Theme.AppCompat.Light"> </style> <style name="MyApp" parent="@style/Theme.AppCompat.Light"> </style> <style name="Theme.AppCompat.Light.MyApp"> </style>
由于在Android Studio 1.0.1中导入dialouge不同,我不能让Svyatoslav Lobachs版本工作。
相反,我在SDK管理器中下载了“Android Support Repository”。 然后添加
dependencies { ... compile "com.android.support:appcompat-v7:18.0.+" }
build.gradle
。 为我工作。
http://developer.android.com/tools/support-library/setup.html有一个错误。; 在Property-> Java构建路径 – >'Project'和'Order and Export'中,不应该有任何jar。 删除它们,并检查“Android私人图书馆”和“Android依赖”解决了我的问题。
右键单击我的项目并选择“ 关闭不相关的项目”后,我遇到了与OP相同的问题。
在我的情况下,我通过重新打开appcompat_v7项目并清理/重建两个项目来解决问题。
在像HelloWorld这样的项目中,截至2015年1月14日,Eclipse(Luna)/ AndroidSDK(不是Android Stduio)与最新的工具和库一起使用时发生在我身上。 当我安装这些工具并将HelloWorld作为第一个应用程序时,我接受了所有的默认设置。 – 这是我的情况
首先,检查是否安装了“Android支持库”库。 如果没有,请安装它。 它没有默认安装。 您可以在菜单中的“Android SDK manager”中完成这一切。
(Android SDK管理器 – >额外 – > Android支持库)
祝福(债务人)<> <
最快的解决方案:
右键点击项目 – > Android工具 – >添加支持库
我为此犯了一个非常愚蠢的错误。 当我每次得到同样的错误时,我无法弄清楚什么是错的。 那么一旦我关闭了工作空间中的所有项目,那就是一切问题开始的时候。 所以只要检查你的“appcompat_v7”是否关闭。 如果是通过双击打开项目,然后清理并重新构建您的项目。 在我的情况下,错误消失了。 快乐的编码!
我不确定当这个问题发布的时候v13支持库是否可用,但是如果有人还在挣扎,我已经看到添加android-support-v13.jar
会解决所有问题。 这是我做到的:
- 右键点击项目 – >属性
- 从左侧的内容表中选择Java Build Path
- 转到Libraries选项卡
- 添加外部的jars按钮,并选择
<your sdk path>\extras\android\support\v13\android-support-v13.jar
对于Android Studio或IntelliJ,您只需要在gradle.build中更新依赖关系。 我使用了以下内容:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.2' }
我不知道你们中有多少人注意到了这一点。 支持库“appcompat_v7”和你的项目应该在同一个目录(我的意思是工作区目录)。 不要清理你的项目,直到它没有错误,否则你将与R.java有困难的时间
你最好用任何名字创建新的项目,然后使用程序创建新的appcompat_v7。
Right Click Project-> properties->Android
在部分库Add
并选择库appcompat。
在Eclipse中右键单击你的项目 – >选择构建路径,然后选择配置构建路径。 从窗口中选择你想要的jar文件并刷新你的项目
被接受的解决方案曾经为我工作过一次,但不是现在。 我不得不在一个新的工作空间中重新创建一个同样类型的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做任何事情。
如果您已经添加了appCompat库,并且已经从SDK位置中正确引用了appCompat,请尝试“无效缓存/重新启动” 。
您可以从Android Studio的“文件”菜单找到它。
在我的情况下,因为我想使用不包含所需的库的SDK的问题发生。 当我增加分钟。 SDK级别的问题消失了。 当然直接包括图书馆本身,也应该删除错误。
忘记了一切。 只需使用Android Studio下载的appcompat库即可。 它有所有缺失的定义。 无论你是否在Eclipse中使用。
我有同样的问题,甚至导入/添加答案中提到的jar /库后,它不会解决错误。 出于挫折,我刚刚创建了一个新的工作空间,并创建了一个全新的android项目,并自动导入appcompat_v7,并没有在清理和构建错误。 不必手动导入一个jar /库。 只是供参考我正在使用eclipse Mars.1 Release(4.5.1),并且每次创建一个新的android项目时都面临完全相同的问题。