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

时间:2013-08-09 19:45:27

标签: android gradle android-gradle

我正在处理我的应用程序,一切正常,直到我尝试在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;

在secondActivity中:

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

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

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

10 个答案:

答案 0 :(得分:65)

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

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

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

答案 1 :(得分:24)

如果您使用 多种口味

  

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

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

<强>的src:

flavor1 / res / layout /(无文件)

<强> flavor2 / RES /布局/ a_layout_file.xml

主要 / RES /布局/ a_layout_file.xml

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

答案 2 :(得分:14)

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

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

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

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

答案 3 :(得分:1)

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

答案 4 :(得分: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>

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

my_file.xml
my_file.xml(v21)

答案 7 :(得分:0)

在android studio中打开项目 点击文件 并单击“使缓存无效/重新启动”

答案 8 :(得分:0)

确保您在 XML 布局文件中引用的控件确实存在,即使它没有被使用。

我在“删除未使用的资源”重构之后遇到了这个问题。

例如,如果布局中没有progressBar,你就会得到这个错误。

rootView = inflater.inflate(R.layout.fragment_stats, container, false);

mProgressBar = rootView.findViewById(R.id.progressBar);

答案 9 :(得分:0)

请检查您是否不小心将 XML 文件添加到布局文件夹中。