无法解决符号AppCompatActivity - 支持v7库未被识别?

90

我正在努力弄清楚为什么我的Android Studio无法正确识别AppCompat v7库。下面的导入语句出现为灰色,并显示没有support.v7.app包。以下是我的活动文件:

import android.support.v7.app.AppCompatActivity;


public class XApplicationActivity extends AppCompatActivity

我的 build.gradle:

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"

所以我真的很困惑,为什么这个问题仍然存在。我已经尝试过以下方法:

  • 清理/重建项目
  • 无效化缓存并重新启动
  • 检查许多次以确保我安装了支持库(我绝对安装了最新的支持库和库)

有人知道任何解决方法吗?这让我浪费了很多时间,非常令人沮丧。

27个回答

115

对我来说,即使升级到appcompat-v7:22.1.0,其中添加了AppCompatActivty,我的问题仍未解决,Android Studio仍然给出相同的问题。

无法解析符号 'AppCompatActivity'

有时清除Android Studio缓存会有帮助。

在Android Studio中,我只需清除缓存并使用以下选项重新启动:

文件->无效缓存/重启


75
如果您使用的是 androidX 而不是 android,则需要更改。
import android.support.v7.app.AppCompatActivity;

to
import androidx.appcompat.app.AppCompatActivity;

并更改

<android.support.constraint.ConstraintLayout>

to
<androidx.constraintlayout.widget.ConstraintLayout>

2
谢谢!我挣扎了很久,在尝试了所有其他解决方案后,这个对我有用。 - Cornelis Kuijpers
1
这指引我朝着正确的方向前进。迁移到AndroidX后,您需要去修复所有那些导入行!迁移不会自动完成任何操作,呃... - Boris Gafurov

34

1. 删除 .idea 文件夹
2. 关闭并重新打开项目
3. 文件 -> 与 Gradle 文件同步项目

这对我很有效


24
我们不需要删除文件,只需要使缓存失效以重新启动配置:

在此输入图像描述


22

AppCompatActivity是支持库版本22.1.0中新增的类,之前称为ActionBarActivity。

建议您将所有支持库使用同一版本。目前最新版本为23.1.1(您可以在此处查看最新版本https://developer.android.com/tools/support-library/index.html#revisions),因此gradle文件中的依赖项应如下所示。

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"

20

好的,我通过第四次进行"./gradlew clean assemble"重建修复了它……Android Studio真是个奇怪的东西


2
尝试过这个后,一切都崩溃了,报了很多错误 :( 但是在重新进行“Make”之后,问题终于解决了! - 3c71

12

如果您已经尝试过以下操作:

  1. 清除缓存并重新启动
  2. 清理/重建项目
  3. ./gradlew clean assemble
  4. 添加implementation
    "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并将以下标志设置为false:

android.useAndroidX=false

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

android.enableJetifier=false

上述标志对于我来说是"true",因此gradle不会下载v7组件。


2
哇,简直太聪明了。你是怎么发现的? - Pacerier
在所有其他方法都失败后,禁用Jetifier和AndroidX对我解决了问题。 - codeman

12

我遵循的解决方案总结如下:

  1. 构建菜单中选择编辑库和依赖项

显示图像描述

  1. 如果没有添加,请确保添加最新的AppCompat

显示图像描述

显示图像描述

  1. 添加后,清理项目并进行重建

显示图像描述


1
我无法看到那些构建选项,我只能看到底部的三个选项,以及顶部的“Make”选项。我已经卸载并重新安装了最新版本的AS,并将其导入为Android项目,但是这些选项(以及其他许多我在其他答案中看到的选项)对我不可用。我研究了如何正确导入React Native项目,它应该像看起来那样容易,但对我来说并没有起作用。你是否需要做一些每个人都知道但不值得一提的事情?或者知道我的问题可能是什么? - user3653863
我这里也是一样的,我没有看到你在截图中提到的相同的“Build”菜单... 这似乎是一个好的解决方案,但我想不出来。 - FMaz008
打开 graddle.properties 文件,将所有标志都设置为 false,例如 android.useAndroidX=falseandroid.enableJetifier=false。这样可以启用这些属性。 - Hemang Joshi

7

我将“... extends ActionBarActivity”更改为“... extends AppCompatActivity”,并尝试了清理、重启、无效缓存/重启等操作,但都没有取得任何进展。我的所有版本都是最新的。

最终解决问题的方法是确保我的导入正确:

import android.support.v7.app.AppCompatActivity;

由于某些原因,它没有像我之前用过的那样自动设置,我不得不手动添加。

希望这能帮助到某些人!


6

我在最低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'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接