无法解析符号AppCompatActivity-无法识别支持v7库?


70

我试图弄清楚为什么我的Android Studio无法正确识别AppCompat v7库。下面的import语句显示为灰色,并说没有support.v7.app的软件包。以下是我的活动文件:

import android.support.v7.app.AppCompatActivity;


public class XApplicationActivity extends AppCompatActivity

我的build.grade:

compile "com.android.support:appcompat-v7:22.0.0"
compile "com.android.support:support-annotations:$ANDROID_SUPPORT_VERSION"
compile "com.android.support:support-v4:$ANDROID_SUPPORT_VERSION"

我的项目设置:

minSdkVersion = 14
targetSdkVersion = 21
compileSdkVersion = 21
buildToolsVersion = "22.0.1"

因此,我对于为什么仍然给我带来问题感到非常困惑。我已经尝试过的事情:

  • 清洁/重建项目
  • 使缓存无效并重新启动
  • 检查十亿次以确保我已安装支持库(我确实确实安装了最新的支持存储库和库)

有人知道任何修复程序吗?这花费了我很多时间,而且确实令人沮丧。

Answers:


111

对我来说,即使升级到appcompat-v7:22.1.0AppCompatActivty添加到其中后,该问题仍无法解决,Android Studio仍存在相同问题

无法解析符号“ AppCompatActivity”

有时会清除android studio缓存帮助。

在android studio中,我刚刚清除了缓存,并使用以下选项重新启动-

File-> Invalidate Caches / Restart


52

如果您使用androidX而不是android,则需要进行更改

import android.support.v7.app.AppCompatActivity;

import androidx.appcompat.app.AppCompatActivity;

并改变

<android.support.constraint.ConstraintLayout>

<androidx.constraintlayout.widget.ConstraintLayout>

谢谢!我做了些安静的挣扎,这在完成所有其他解决方案后为我工作
Cornelis Kuijpers

这将我引向正确的方向。迁移到AndroidX后,您需要修复所有这些导入行!迁移不会做任何事情,uhhrrr
Boris Gafurov



22

AppCompatActivity仅在支持库的22.1.0版本中添加。在此之前,它被称为ActionBarActivity。

您的所有支持库都应使用相同的版本。在撰写本文时,最新版本是23.1.1(您可以在此处找到最新版本https://developer.android.com/tools/support-library/index.html#revisions),因此gradle文件的dependencies部分应该看起来像这样。

implementation "com.android.support:support-v4:23.1.1"
implementation "com.android.support:appcompat-v7:23.1.1"
implementation "com.android.support:support-annotations:23.1.1"

19

好的,我第四次通过重新构建以进行./gradlew clean汇编来修复了它。AndroidStudio有点奇怪


2
尝试了一下,它破坏了一切,报告了很多错误:(但是,在此之后再次“使”项目完成后,问题终于消失了!
3c71

11

我遵循的解决方案归纳为以下步骤:

  1. 从“生成”菜单中,选择“编辑库和相关性”

在此处输入图片说明

  1. 确保您添加了最新的AppCompat软件包(如果未添加)

在此处输入图片说明

在此处输入图片说明

  1. 添加后,清理您的项目并重建它。

在此处输入图片说明


1
我看不到那些Build选项,只看到了底部的3个选项,以及顶部的“ Make”。我已经卸载并重新安装了AS的最新版本并作为android项目导入,但是这些选项(以及我在其他答案中看到的许多其他选项)对我不可用。我研究了如何正确导入React本机项目,它应该看起来像看起来一样简单,但这对我没有用。您是否必须做一些大家都知道的事情,所以不必理会?还是知道我的问题是什么?
user3653863

同样在这里,我没有看到与您在屏幕快照中提到的“生成”菜单相同的菜单……这似乎是一个很好的解决方案,但我无法弄清楚。
FMaz008

10

如果您已经尝试过

  1. 使缓存无效并重新启动
  2. 清洁/重建项目
  3. ./gradlew清洁组装
  4. 添加了实现
    “ com.android.support:support-v4:23.1.1”
    “ com.android.support:appcompat-v7:23.1.1”
    “ com.android.support:support-annotations:23.1.1”
  5. 更正了对android.support.v7.app.AppCompatActivity的导入;
  6. 更正了所有现有的androidx导入

仍然面临问题,请阅读以下内容

终于找到了解决方法

我尝试了所有答案中提到的所有内容,但都失败了。

转到gradle.properties使这些标志为假

android.useAndroidX = false

//自动转换第三方库以使用AndroidX

android.enableJetifier = false

上面的标志是

“是的,对我来说,因此gradle不会下载v7组件”


2
哇,天才。您是怎么发现的?
Pacerier,

禁用jetifier和androidx之后,一切都失败了。
wambada

7

我从“ ...扩展了ActionBarActivity”更改为“ ...扩展了AppCompatActivity”,并尝试清理,重新启动,使缓存无效/重新启动,却一无所获。我所有的版本都是最新的。

最终解决的是确保我的导入正确:

import android.support.v7.app.AppCompatActivity;

由于某种原因,它没有像我以前那样自动设置,因此必须手动添加。

希望能对某人有所帮助!


5

我在使用最小api 23的新启动项目中遇到了同样的问题,最后我在gradle依赖文件中添加了以下代码行,它解决了错误:)

 implementation 'com.android.support:appcompat-v7:28.0.0'
 implementation 'com.android.support:customtabs:28.0.0'
 implementation 'com.android.support:support-vector-drawable:28.0.0'
 implementation 'com.android.support:support-media-compat:28.0.0'

4

我遇到了同样的确切错误,以防万一它可以帮助其他人.. 尝试了所有Invalidate,构建干净,甚至删除.gradle /,调整支持库等。

我发现升级settings.gradle gradle版本修复了它(它是2.1.3),在gradle工具链中似乎是类路径'com.android.tools.build:gradle:2.2.3'


4

更换

import android.support.v7.app.AppCompatActivity;

与导入androidx.appcompat.app.AppCompatActivity


4

我经历了同样的情况,解决方法很简单。只需尝试删除以下导入语句即可。

import android.support.v7.app.AppCompatActivity;

将显示以下代码,提示您也按alt + enter。

import androidx.appcompat.app.AppCompatActivity;

只需按alt + enter并完全删除以前的import语句。

基本上,这个问题出现在新版本的Android Studio中。


3

最好的解决方案肯定是去File> Invalidate Caches&Restart

然后在对话框菜单中,单击“使缓存无效并重新启动”。等待一分钟或多长时间即可重置您的项目,那么您应该会很好。

-

我应该注意,我还遇到了引用我在gradle中拥有的compileOnly库中的资源文件或“ R”文件的问题。(即compileOnly库> res>引用的xml文件)我停止在Java代码中引用此文件,它对我有帮助。因此,请不要在意文件的引用位置。


3

我有这些设置 'gradle.properties'

android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true

最好使用androidx库。所以我将所有导入更改为androidx库并编译了项目。访问http://developer.android.com/jetpack/androidx以获取信息。


2

androidX用户

将您的minSdkVersion更改为api级别21。

像这样minSdkVersion 21 或用构建您的应用程序,compileSdkVersion 28然后更改targetSdkVersiontargetSdkVersion 28

并且您会看到v7错误将消失。之后,如果您在创建工具栏或其他小部件时遇到问题。按Alt + Enter并为其创建方法。


不是androidx用户,但终于解决了我的问题。
马可(Marco)



1

背景信息:

我的IDE

Android Studio 3.1.3
Build #AI-173.4819257, built on June 4, 2018
JRE: 1.8.0_152-release-1024-b02 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1

第一个解决方案:再次导入项目,并且不同意升级android gradle插件。

第二种解决方案:您的文件应包含这些片段

build.gradle:

buildscript {
  repositories {
    jcenter()
    google()//this is important for gradle 4.1 and above
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.1.3' //this android plugin for gradle requires gradle version 4.4 and above
  }
}
allprojects {
  //...
  repositories {
    jcenter()
    google()//This was not added by update IDE-wizard-button.
    //I need this when using the latest com.android.support:appcompat-v7:25.4.0 in app/build.gradle
  }
}

遵循IDE的建议将gradle版本升级到4.4,或者考虑在gradle / wrapper / gradle-wrapper.properties中包含此版本。

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

可选更改app / build.gradle中的buildToolsVersion:

android {
compileSdkVersion 25
buildToolsVersion '27.0.3'

app / build.gradle:注释掉依赖性并让构建失败(自动或触发它)

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

app / build.gradle:再次在依赖项中添加注释。建议将它们从编译更改为实现,但是目前这只是一个警告问题。

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

在项目重建之后,导入语句不应再变灰;尝试在类上调用Ctrl + h。但是由于某些原因,这些类引用语句上的错误标记仍然存在。要摆脱它们,我们需要隐藏并恢复项目树视图,或者关闭并重新打开项目。

最后就是这样。

进一步阅读:

更新摇篮

使用新的依赖项配置

如果您希望使用图片跟踪作为我的解决方案,则可以访问我的博客



1

如果给定的解决方案不起作用,即使您的工作是在Java上,也要使用'KOTLIN'作为语言创建一个新项目。然后将新项目的“主”文件夹替换为旧项目的“主”文件夹。


0

对我而言,以下代码运行良好:

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

使用(xml文件):

androidx.constraintlayout.widget.ConstraintLayout xmlns:android="...."

0

我刚刚发表了评论并使用了androidx,现在一切正常!

import androidx.appcompat.app.AppCompatActivity;
// import android.support.v7.app.AppCompatActivity;


0

包括import androidx.appcompat.app.AppCompatActivity; 在您的MainActivity.java中,带有其他导入语句。看起来像: 在此处输入图片说明

这解决了我的问题

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.