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

时间:2015-06-12 12:43:18

标签: android android-support-library android-appcompat android-library

我正在试图找出为什么我的Android工作室无法正确识别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"

所以我真的很困惑为什么这仍然给我带来问题。我已经尝试过的事情了:

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

有人知道有任何修复方法吗?这花费了我很多时间,而且非常令人沮丧。

26 个答案:

答案 0 :(得分:91)

对我来说, 即使在升级到appcompat-v7:22.1.0后,其中添加了AppCompatActivty, 问题没有解决,Android Studio给出了同样的问题

  

无法解析符号' AppCompatActivity'

有时清除android studio缓存帮助。

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

  

文件 - >使缓存无效/重新启动

答案 1 :(得分:30)

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

这对我有用

答案 2 :(得分:20)

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"

答案 3 :(得分:16)

好的,我通过重建它来修复它,以便第四次进行./gradlew清理组装... Android Studio是一个奇怪的事情

答案 4 :(得分:13)

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

introducir la descripción de la imagen aquí

答案 5 :(得分:6)

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

  1. 构建菜单中,选择编辑库和依赖
  2. enter image description here

    1. 如果未添加,请确保添加最新的 AppCompat
    2. enter image description here

      enter image description here

      1. 添加后,清理您的项目并重建
      2. enter image description here

答案 6 :(得分:5)

我从" ...更改了ActionBarActivity" to" ...扩展AppCompatActivity"并尝试清理,重新启动,使高速缓存/重新启动无效并且无法到达任何地方。我的所有版本都是最新版本。

最终解决了这个问题,确保我的导入正确无误:

<form #topping (change)="updateTopping(topping)">
    <span *ngFor= "let top of toppingOptions">
        {{top.name}} 
        {{top.price.toFixed(2)}}
        <button type="button" value="{{top.name}}-add" (click)="addTopping({{top.name}})">+</button>
        <button type="button" value="{{top.name}}-minus" (click)="minusTopping({{top.name}})">-</button>
        <br>
    </span>    
</form>

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

希望能帮助别人!

答案 7 :(得分:4)

我经历了同样的情况,并且修复过程非常简单。只需尝试删除以下导入语句即可。

import android.support.v7.app.AppCompatActivity;

将显示一条包含以下代码的消息,并要求您按Alt + Enter。

import androidx.appcompat.app.AppCompatActivity;

只需按alt + enter并完全删除以前的导入语句即可。

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

答案 8 :(得分:3)

我得到了同样的确切错误以防万一它帮助其他人..记录哪些对我有用的最新(2017年1月14日)最新的一切。尝试了所有Invalidate,构建干净,甚至删除.gradle /,调整支持库等等。在多个堆栈溢出答案上。

我发现升级settings.gradle gradle版本修复它(它是2.1.3)gradle toolchain中的东西似乎         classpath'com.android.tools.build:gradle:2.2.3'

答案 9 :(得分:2)

该问题可能是导入参考,请
尝试进行更改。 来自:

import android.support.v7.app.AppCompatActivity;


收件人:

import androidx.appcompat.app.AppCompatActivity;

答案 10 :(得分:2)

我在'gradle.properties'中有这些设置

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

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

答案 11 :(得分:2)

替换

import android.support.v7.app.AppCompatActivity;

与 导入androidx.appcompat.app.AppCompatActivity

答案 12 :(得分:2)

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

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

-

我应该注意,我还遇到了引用我在gradle中具有的compileOnly库中的资源文件或“ R”文件的问题。 (即compileOnly库> res>引用的xml文件),我不再在Java代码中引用此文件,它对我有帮助。因此,请避免在哪里引用文件。

答案 13 :(得分:1)

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

答案 14 :(得分:1)

androidX用户

将minSdkVersion更改为api级别21。

像这样minSdkVersion 21 或使用compileSdkVersion 28构建您的应用,并将targetSdkVersion更改为targetSdkVersion 28

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

答案 15 :(得分:0)

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

    public static class VoiceApp
    {
        static readonly CultureInfo eng = new CultureInfo("en-US");
        public static SpeechRecognitionEngine recognitionEngine = new SpeechRecognitionEngine(eng);

        public static BindingList<VoiceCommand> commands { get; set; } = new BindingList<VoiceCommand>();
        public static void ActivateRecognition()
        {
            Choices choices = new Choices(commands.Select(x => x.Command).ToArray());
            GrammarBuilder grammarBuilder = new GrammarBuilder(choices);
            grammarBuilder.Culture = eng;
            Grammar grammar = new Grammar(grammarBuilder);
            recognitionEngine.LoadGrammar(grammar);
            recognitionEngine.SetInputToDefaultAudioDevice();
            recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
        }
        public static void DeactivateRecognition()
        {
            recognitionEngine.RecognizeAsyncStop();
        }
        public static void SaveData(string path = "testSave.xml")
        {
            var ser = new XmlSerializer(typeof(List<VoiceCommand>));
            var saveData = commands.ToList();
            var writer = new FileStream(Path.ChangeExtension(path, "xml"), FileMode.Create);
            ser.Serialize(writer, saveData);
        }
        public static void LoadData(string path = "testSave.xml")
        {
            var ser = new XmlSerializer(typeof(List<VoiceCommand>));
            var reader = new FileStream(path, FileMode.Open);
            commands = new BindingList<VoiceCommand>(ser.Deserialize(reader) as List<VoiceCommand>);
        }
    }

答案 16 :(得分:0)

对我来说,以下代码效果很好:

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;

使用(xml文件):

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

答案 17 :(得分:0)

使缓存无效后, 从

import android.support.v7.app.AppCompatActivity;

import androidx.appcompat.app.AppCompatActivity;

为我工作。

答案 18 :(得分:0)

包括import androidx.appcompat.app.AppCompatActivity;在您的MainActivity.java中,带有其他导入语句。看起来像: enter image description here

这解决了我的问题

答案 19 :(得分:0)

Follow these steps:

File >> Invalidate Caches / Restart
Clean project
Finally go to build.gradle
And compileSdkVersion and targetSdkVersion lower version
If 
implementation 'com.android.support:appcompat-v7:29.0.0'
Convert this to 
implementation 'com.android.support:appcompat-v7:28.0.0'

答案 20 :(得分:0)

File-> Invalidate Caches / Restart对我有用。

答案 21 :(得分:0)

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

import android.support.v7.app.AppCompatActivity;

import androidx.appcompat.app.AppCompatActivity;

并更改

<android.support.constraint.ConstraintLayout>

<androidx.constraintlayout.widget.ConstraintLayout>

答案 22 :(得分:0)

如果您已经尝试过

  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组件”

答案 23 :(得分:0)

我在与mi刚开始的项目中遇到了同样的问题。 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'

答案 24 :(得分:0)

背景信息:

我的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

Optional在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。 但是由于某种原因,那些类引用语句上的错误标记仍然存在。 要摆脱它们,我们需要隐藏并还原项目树视图或 或者关闭并重新打开该项目。

最后就是这样。

更多读物:

Update Gradle

Use the new dependency configurations

如果您希望使用图片线索作为我的解决方案,则可以访问我的blog

答案 25 :(得分:0)

删除项目中的.idea文件夹,该文件夹为隐藏文件夹。转到系统中的项目,然后单击ctrl + H,它将可见,然后将其删除。现在重新启动您的android studio.I将解决。它为我工作。