Android Studio:Gradle:错误:找不到符号变量

问题描述 投票:52回答:8

我正在研究我的应用程序,一切正常,直到我尝试在java中显示图像。

我运行应用程序一次,它正常运行,图片显示。之后它要求我导入一些库并导入它们。之后我的活动出错了。

错误如:

Gradle: error: cannot find symbol variable activity_main
Gradle: error: cannot find symbol variable button1
Gradle: error: cannot find symbol variable button2
Gradle: error: cannot find symbol variable textView
Gradle: error: cannot find symbol variable secondActivity

在MainActivity中,我导入了这些库:

import android.R;
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;

在第二个活动中:

import android.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

有谁知道如何解决这一问题?

编辑:我删除了import android.R;,现在它正常工作。

android gradle android-gradle
8个回答
66
投票

你不应该导入android.R。这应该是自动生成和识别的。 This question包含很多有用的提示,如果你在删除导入后引用R时会出现一些错误。

删除导入后的一些基本步骤,如果出现这些错误:

  • 清理您的构建,然后重建
  • 确保XML文件中没有错误或拼写错误
  • 确保您的资源名称包含[a-z0-9.]。由于某种原因,不允许大写字母或符号。
  • 执行Gradle同步(通过工具> Android>使用Gradle文件同步项目)

24
投票

如果你使用多种口味?

- 确保资源文件不仅仅在其中一种风格和主要文件中声明/添加。

示例:包含符号变量的a_layout_file.xml文件

SRC:

flavor1 / res / layout /(没有文件)

flavor2 / RES /布局/ a_layout_file.xml

主/ RES /布局/ a_layout_file.xml

此设置将给出错误:找不到符号变量,这是因为资源文件只能在两种风格中或仅在主体中。


15
投票

如果您在项目中使用String构建配置字段,则可能是这种情况:

buildConfigField "String", "source", "play"

如果像上面那样声明String,则会导致错误发生。修复方法是将其更改为:

buildConfigField "String", "source", "\"play\""

1
投票

确保导入的R不是来自其他模块。我已经将一个类从一个模块移动到一个主项目,而R是模块中的一个。


0
投票

确保你的MainActivity文件中有.ScanActivityAndroidManifest.xml

<activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ScanActivity">

    </activity>

0
投票

确保您的变量在引用它的方法的范围内。例如,我在类中的方法中本地定义了一个textview,并在另一个方法中引用它。

我将textview定义移到了类定义正下方的方法之外,因此另一个方法可以访问定义,从而解决了问题。


0
投票

@ TouchBoarder上面的答案的另一个替代方案是,您可能还有两个具有相同名称但不同api版本的布局文件。您应该删除旧的my_file.xml文件

my_file.xml
my_file.xml(v21)

0
投票

在android studio单击文件中打开项目,然后单击“使高速缓存/重新启动无效”

© www.soinside.com 2019 - 2024. All rights reserved.