我正在试图找出为什么我的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"
所以我真的很困惑为什么这仍然给我带来问题。我已经尝试过的事情了:
有人知道有任何修复方法吗?这花费了我很多时间,而且非常令人沮丧。
答案 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)
答案 5 :(得分:6)
答案 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)
答案 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)
如果您已经尝试过
仍然面临问题,请阅读以下内容
我尝试了所有答案中提到的所有内容,但均失败了。
转到 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。 但是由于某种原因,那些类引用语句上的错误标记仍然存在。 要摆脱它们,我们需要隐藏并还原项目树视图或 或者关闭并重新打开该项目。
最后就是这样。
更多读物:
Use the new dependency configurations
如果您希望使用图片线索作为我的解决方案,则可以访问我的blog
答案 25 :(得分:0)
删除项目中的.idea文件夹,该文件夹为隐藏文件夹。转到系统中的项目,然后单击ctrl + H,它将可见,然后将其删除。现在重新启动您的android studio.I将解决。它为我工作。