找不到 Theme.AppCompat.Light 以获得新的 Android ActionBar 支持

Posted

技术标签:

【中文标题】找不到 Theme.AppCompat.Light 以获得新的 Android ActionBar 支持【英文标题】:Can't Find Theme.AppCompat.Light for New Android ActionBar Support 【发布时间】:2013-07-26 02:31:41 【问题描述】:

我正在尝试实现几天前由 Google 发布的新 ActionBar 支持库。过去,我使用 Google Developer 的Support Library Setup 页面上列出的相同方法成功实现了 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 问题

style.xml

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

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

【问题讨论】:

尝试清理项目,也许您需要重新加载依赖项,以便 AppCompact 中的样式也可以重新加载 @TheWizKid95 我对我正在尝试实现的应用程序和库进行了清理。根据 Eclipse,两者都没有导致任何代码更改,也没有解决任何问题。 你添加了资源支持库吗?将 jar 添加到库是不够的。 @GabrieleMariotti 是的,我专门按照 Google 的指示添加了资源和项目库。 对我有用的是将它作为一个项目添加到工作区。只是导入 jar 并将它们添加到 buildpath 是行不通的。 【参考方案1】:

接下来你需要做的:

    File-&gt;Import (android-sdk\extras\android\support\v7)。选择“AppCompat” Project-&gt; properties-&gt;Android.在节库中“添加”并选择“AppCompat” 就是这样!

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

【讨论】:

这对我不起作用。我完全按照此处所写的内容进行操作,但最终出现数百个未找到与给定名称匹配的资源错误。资源,其中缺少的是 API 11 及更高版本中包含的样式,但这东西应该适用于 API 7。是否有一些我缺少的连接!?! 遇到类似问题,我的 appcompat 库中不存在 Theme.AppCompat.Light.NoActionBar 主题。 在文件导入下我找不到'android-sdk'。我只看到'andoird'。有人吗? apocalypz,我认为您缺少资源,因为您在没有资源的情况下导入了库。这是“使用资源添加库”的链接developer.android.com/tools/support-library/… 按照上述步骤 + 将 sdk\extras\android\support\v13android-support-v13.jar 添加到项目的 libs 目录即可解决问题。【参考方案2】:

如果您像我一样按照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">
    

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

【讨论】:

是的,这对我有用。需要注意的关键是,在父属性“android:”中,内置主题(样式)的前缀,而没有此前缀的值引用您自己的样式,或您链接到的任何库中的样式......例如 android-support -v7-appcompat。 在新的 Android 项目中没有res/values/styles.xml。至少当您使用android create project 创建它时不会。 使用向导选择全屏应用程序并隐藏控件创建项目时,您将获得 styles.xml 没有什么对我有用...已经浪费了 4 个小时。我仍然没有找到与给定名称匹配的资源(在“主题”处,值为“@style/Theme.AppCompat.Light”)。快要放弃了。 我只是以另一种方式改变了这些,事实上这就是我的项目中的事情。【参考方案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" />

【讨论】:

请记住有 2 个 *.iml 文件。具有库条目的条目包含在项目的子文件夹中,并且文件名小写。 这解决了我的问题。将 appcompat 添加到内部 build.gradle 的依赖项中有效。我很遗憾地说我确实手动编辑以匹配另一个破坏事物的项目!【参考方案4】:

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

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

【讨论】:

谢谢。我的情况就是这样。在第 1 步(File->Import (android-sdk\extras\android\support\v7)。选择“appcompat”),需要勾选“copy to workspace”。 我遇到了类似的问题。非常感谢,这真的很棘手 AndroidStudio 中的相同问题。我花了大约 3 个小时试图弄清楚这一点。谢谢! 朱普。可以确认这一点..IntellJ 有完全相同的问题,至少在 AppCompat 上......在这个问题上浪费了 4 个小时。 这也是我的解决方案。将 appcompat_v7 项目复制到与目标项目相同的驱动器并将其添加为 lib 使其正常工作。【参考方案5】:

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

    确保 APLMP 具有相同的 minSdkVersiontargetSdkVersion

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

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

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

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

1 和 2 得到了对 Java 类的引用工作正常...但是当我尝试从 APL。当我执行第 3 步时,这种情况才消失。

【讨论】:

绝对使用“@style/Theme.AppCompat...”而不是“@android:style/Theme.AppCompat...”。这个答案中的 #3 解决了我的问题。 第 2 点似乎不正确。它会导致生成错误日志消息,如下所述并已修复:***.com/questions/18421274/…【参考方案6】:

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

右击应用进入属性

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

【讨论】:

【参考方案7】:

IntelliJ IDEA 解决方案。

1.运行Android SDK Manager并安装最新的SDKAndroid支持库。 SDK和Android支持库的版本应该相同! 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(不是另一个!)。@ 987654328@

Android Studio 解决方案。

1.运行Android SDK Manager并安装最新的SDKAndroid支持库。 SDK和Android支持库的版本应该相同! 23 在我的情况下。另一个变体会给你错误。

2.build.gradle

旁边添加
dependencies 
    compile 'com.android.support:appcompat-v7:23.0.1'
 

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

【讨论】:

我在 SO 中找到的关于 android 的最佳答案【参考方案8】:

适用于 Android Studio 1.2.2

parent 属性值中删除“android”:

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

【讨论】:

【参考方案9】:

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

【讨论】:

您介意更详细地了解如何准确引用它吗?我已经引用了那个确切的文件夹作为 Android 开发人员的说明。完全按照他们网站上的说明进行操作。我可以说它被引用至少部分是因为 ActionBarActivity 正在被扩展而没有错误。 引用appcompat作为Android库,你的主要项目资源可以从appcompat找到主题 成功了。我之前是在 Java 构建路径中进行的。【参考方案10】:

对于 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.+"

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

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

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

希望您能找到解决方案。

【讨论】:

帮助我的是使用 SDK 管理器升级我的 Android 支持库,从工作区中删除旧的 appcompat 库,重新导入新更新的 appcompat 库(并复制到工作区)然后构建。 【参考方案13】:

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

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

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

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

    将以下文件添加到项目的libs目录&lt;SDK-PATH&gt;\extras\android\support\v13android-support-v13.jar

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

【讨论】:

很高兴它可以帮助某人:)【参考方案14】:

作品:

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

【讨论】:

【参考方案15】:

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

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

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

build.gradle。为我工作。

【讨论】:

【参考方案16】:

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

【讨论】:

【参考方案17】:

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

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

【讨论】:

【参考方案18】:

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

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

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

祝福, (债务人)

【讨论】:

【参考方案19】:

最快的解决方案:

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

【讨论】:

【参考方案20】:

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

【讨论】:

【参考方案21】:

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

    右键项目->属性 从左侧目录中选择 Java 构建路径 转到“库”选项卡 添加外部罐子按钮并选择&lt;your sdk path&gt;\extras\android\support\v13\android-support-v13.jar

【讨论】:

【参考方案22】:

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

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

【讨论】:

【参考方案23】:

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

【讨论】:

【参考方案24】:

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

Right Click Project-> properties->Android

在部分库Add 中选择库 appcompat。

【讨论】:

【参考方案25】:

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

【讨论】:

【参考方案26】:

接受的解决方案曾经对我有用,但现在不行。我不得不在一个新的工作空间中重新创建一个相同类型的 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 做任何事情。黑暗。

【讨论】:

【参考方案27】:

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

【讨论】:

【参考方案28】:

在我的情况下,出现问题是因为我想使用不包含所需库的 SDK。当我增加最小值时。 SDK级别的问题消失了。当然直接包括库本身,也应该消除错误。

【讨论】:

【参考方案29】:

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

【讨论】:

【参考方案30】:

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

【讨论】:

以上是关于找不到 Theme.AppCompat.Light 以获得新的 Android ActionBar 支持的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin - 检索项目的父项时出错:找不到与给定名称“Theme.AppCompat.Light.DarkActionBar”匹配的资源

Theme.AppCompat.Light.DarkActionBar ActionBarActivity

No resource found that matches the given name 'Theme.AppCompat.Light'

为啥导入不了heme.appcompat.light.darkactionbar

Theme.AppCompat.Light的解决方法

Theme.AppCompat.Light.NoActionBar AdjustResize 不起作用