【问题标题】:IDE "Cannot Resolve @style/Theme.Appcompat" when using v7 compatibility support theme使用 v7 兼容性支持主题时 IDE“无法解析 @style/Theme.Appcompat”
【发布时间】:2013-07-26 01:42:33
【问题描述】:

这并不是一个真正的大问题,因为我的项目仍然可以正确构建和运行(使用 gradle),但是我无法让 Android Studio 识别 API 18 SDK 中发布的应用程序兼容性主题(允许操作栏支持适用于 android 2.1 及更高版本)。

我已成功加载支持库,因为 Java 文件中的 ActionBar 类可以完成代码。问题是 Android Studio 显示分配给 AndroidManifest.xml 中 Theme.AppCompat.Light 的红色文本错误。

有没有办法为 Android Studio 的外部库的清单中声明的​​主题资源启用代码完成?

更新这是我的 AndroidManifest 中的 <activity> 块:

<activity
    android:name="com.example.activities.MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.AppCompat.Light" >

我也尝试在应用程序块中设置主题:

<application
    android:allowBackup="true"
    android:icon="@drawable/main_final_ic"
    android:label="@string/app_name"
    android:logo="@drawable/main_final_enzo"
    android:theme="@style/Theme.AppCompat.Light" >

同样,这些都可以正常工作和编译,但在我的 IDE 中显示为带有错误的红色文本。我也刚刚确认在 Eclipse 中运行我的项目时会出现同样的问题。

【问题讨论】:

  • 你能把你的 Manifest 文件贴在你设置 AppCompat 主题的地方吗?
  • @Sharj 我已经添加了清单中设置样式的部分。同样,一切都可以编译,并且用我的自定义样式替换 appcompat 样式可以很好地使用自动完成功能。
  • 嗯,我很确定 Studio 应该从 aar 库中获取资源。您刚刚将其添加为 compile 依赖于内置存储库中的工件,对吧?
  • 对,gradle 文件正在从我的本地 maven 存储库(加载了 SDK 管理器)中提取它。不过,为了让我的 java 文件使用自动完成功能,我必须明确地将 v7 支持 jar 添加到我的构建路径中......你认为这可能是问题吗?
  • 我也必须手动将 v7 支持 jar 添加到我在 Android Studio 中的构建路径中,我还做了下面的答案以使其“解决”缺少的主题。

标签: android eclipse android-studio android-support-library


【解决方案1】:

我的解决方案/问题比这里的大多数人更简单和不同。

我的问题是类似的,我有一个这样的错误:

resource style/ThemeOverlay.AppCompat.Dark (...) not found

奇怪的是我可以在调试模式下构建,但不能在发布模式下构建。

我的 Android 清单未包含任何错误。我的问题是我的资源文件夹中有两个 style.xml 文件。

简单的解决方案:删除 style.xml 文件之一或合并它们,你应该很好。我的两个 .xml 文件中有两种样式几乎完全相同。删除其中一个文件后,我可以立即以发布模式构建。

[%]D - 是时候碰杯喝点啤酒了。 :D

【讨论】:

    【解决方案2】:

    问题是我的 appcompact 库项目位于不同的位置。在导入时,我必须检查“将项目复制到工作区”就是这样!

    只需转到文件点击关闭,然后点击现有项目并选择您的 android 项目....主题问题将得到解决。

    【讨论】:

      【解决方案3】:

      在挣扎了几个小时后,将 build:gradle 版本 2.3.3 降级到 2.2.3 成功了!

      classpath 'com.android.tools.build:gradle:2.2.3'
      

      gradle-wrapper.properties:

      distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
      

      【讨论】:

        【解决方案4】:

        我从:

        类路径'com.android.tools.build:gradle:+'

        到:

        类路径'com.android.tools.build:gradle:2.2.3'

        现在它开始工作了!

        【讨论】:

        • 谢谢。问题出现在classpath 'com.android.tools.build:gradle:2.3.0-beta1' 上,而2.2.3 效果很好。 (Android Studio 2.2.3)
        【解决方案5】:

        Filip Cvejic 的回答很有用。我的 android studio 版本是 1.3.1,有同样的问题。如下添加一行“compile 'com.android.support:appcompat-v7:23.0.0'”后即可工作:

           dependencies {
                compile "com.android.support:support-v4:23.0.0"
                compile "com.android.support:support-v13:23.0.0"
                compile "com.android.support:cardview-v7:23.0.0"
                compile 'com.android.support:appcompat-v7:23.0.0'
            }
        

        【讨论】:

          【解决方案6】:

          compile 'com.android.support:appcompat-v7:21.0.0' 添加到 gradle.build (Module: app) 中的依赖项并重建项目为我解决了 Android Studio 1.0.2 中的问题。

          我还检查了 SDK 管理器,并且确实下载了支持库。

          【讨论】:

            【解决方案7】:

            我知道我回复晚了,但这个答案可能会对未来的访客有所帮助。

            • 将 Gradle 的 0.12.+ 更改为 0.12.1 即可。

              classpath 'com.android.tools.build:gradle:0.12.1'
              

            【讨论】:

              【解决方案8】:

              在 android studio 上修复对我来说很简单。

              点击帮助--->检查更新

              然后实际阅读提示内容,并决定您想要最新的更新还是稳定的更新。

              一旦 android studio 重新启动,它应该可以工作了。

              旁注: 在我重建项目之前,所有内容对我来说仍然是红色下划线。

              【讨论】:

                【解决方案9】:

                我也有同样的问题。听起来您的 V7 jar 文件编译得很好,但您可能缺少所需的 xml 资源。您需要手动包含随 V7 包提供的“Theme.xml”。这是我为修复它所做的。

                查看:使用资源添加库 http://developer.android.com/tools/support-library/setup.html

                这里提供的说明不是很清楚,因为它没有告诉您引入任何资源。(可能是 Android Studio 中的错误?)

                这是我所做的:

                1. 在管理器中更新您的 SDK,并确保在 extra 中包含“Android 支持存储库”
                2. 在文件资源管理器(Mac 上的 Finder)中转到 SDK,找到额外的文件夹(Windows 上的..\sdk\extras\android\support\v7\appcompat\res\values)。某处有“themes.xml”和“themes_base.xml”。复制这两个文件。
                3. 在您的项目中将文件粘贴到“values”目录中
                4. 进行重建,这对我有用。

                【讨论】:

                • 这会导致其他错误,因为这些主题本身引用了其他 xml 条目。另外,如果可能的话,我宁愿不要为我的项目提供相同主题的 2 个版本。
                • 我添加了最后一步,它起作用了: 5. 更改 styles.xml:
                • 在我的情况下,项目编译得很好,但我仍然有这个:无法解析符号“主题”:“@style/Theme.AppCompat.Light.DarkActionBar”主题是红色的,但是当我提示时, ctrl+space 建议我这个:“Theme.AppCompat.Light.DarkActionBar”,它也可以编译,但主题仍然是红色的......
                • 这是迄今为止最好的指导别人可以给别人。因为这也适用于 Intellij Idea
                • @AlexJolig Intellij 和 Android Studio 是同一个程序。
                【解决方案10】:

                一个常见的问题。就我而言,这是可行的:

                在“android-support-v7-appcompat”项目中:

                -Delete “android-support-v7-appcompat” from Package explorer.
                -Import again and check “Copy into workspace”
                -In Properties -> Android -> in Project build target, uncheck Android 2.2 and check Android 4.1.2
                -In Java build path, uncheck if you have any .jar library, and uncheck the Dependences
                

                另一方面,使用“android-support-v7-appcompat”的项目

                in Propiedades -> Android add the library, but uncheck "IsLibrary”.
                -In Android -> Project build tarjet check Android 4.0.
                -In "Java Build Path" -> Order and Export -> Unchecked the .jar library
                -Finally do a “Project -> Clean” both projects 
                

                【讨论】:

                  【解决方案11】:

                  问题是我的 appcompact 库项目位于不同的位置。在导入时,我必须检查“将项目复制到工作区”就是这样!

                  【讨论】:

                    【解决方案12】:

                    【讨论】:

                    • 我使用的是 0.8.1 版本,我遇到了这个问题。
                    • 是的,我想它回来了!
                    • 我在 0.8.4 上,问题仍然存在
                    • 在 1.0.0-rc 中仍然存在问题:D
                    • 我正在开发 1.1.0,但仍然有这个问题。难以置信。
                    【解决方案13】:

                    不要将库添加到 Java 构建路径,在 Settings>Android>Libraries>Add Library 中添加库(作为项目)。

                    【讨论】:

                    • 那是Eclipse,在Android Studio中是不同的,因为必须使用Gradle。
                    猜你喜欢
                    • 2022-09-29
                    • 1970-01-01
                    • 2015-08-28
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-08-04
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多