59

I was working on my app and everything was normal until I tried to display image in java.

I ran the app once and it ran normally, the picture was displayed. After that it asked me to import some libraries and I imported them. After that I got errors for my activities.

Errors like:

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

In MainActivity I have imported these libraries:

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

and in secondActivity these:

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

Does anyone know how to fix this?

EDIT: I deleted import android.R; and now it works normally.

4

11 回答 11

75

你不应该导入android.R. 这应该是自动生成和识别的。 如果您在删除导入后遇到一些错误,则此问题包含许多有用的提示。R

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

  • 清理你的构建,然后重建
  • 确保您的 XML 文件中没有错误或拼写错误
  • 确保您的资源名称由[a-z0-9.]. 由于某种原因,不允许使用大写字母或符号。
  • 执行 Gradle 同步(通过 Tools > Android > Sync Project with Gradle Files)
于 2013-08-09T20:00:03.107 回答
25

如果您使用多种口味

- 确保资源文件未在仅一种风格和 main 中声明/添加。

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

源代码:

flavor1/res/layout/(无文件)

风味2 /res/layout/a_layout_file.xml

主要/res/布局/a_layout_file.xml

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

于 2016-01-04T13:12:47.903 回答
22

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

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

如果您像上面那样声明您的字符串,它将导致错误发生。解决方法是将其更改为:

buildConfigField "String", "source", "\"play\""
于 2016-12-30T06:43:02.097 回答
2

在android studio中打开项目单击文件并单击Invalidate Caches/Restart

于 2019-03-19T13:33:03.753 回答
1

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

于 2018-01-04T15:53:08.627 回答
0

确保您拥有MainActivity.ScanActivity进入您的AndroidManifest.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>
于 2017-07-13T22:14:50.143 回答
0

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

当我做了“删除未使用的资源”重构之后,我有了这个。

例如,如果布局中没有progressBar,您将收到此错误。

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

mProgressBar = rootView.findViewById(R.id.progressBar);
于 2021-03-23T02:01:42.017 回答
0

确保您的包名在顶部正确,错误的包名可能会导致此问题。

于 2021-11-27T15:11:10.293 回答
0

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

于 2021-06-11T06:28:29.997 回答
0

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

我将 textview 定义移到了类定义正下方的方法之外,以便其他方法可以访问该定义,从而解决了问题。

于 2017-08-13T08:07:12.860 回答
0

@TouchBoarder 上述答案的另一种选择是,您可能还有两个同名但用于不同 api 版本的布局文件。您应该删除旧的 my_file.xml 文件

my_file.xml
my_file.xml(v21)
于 2018-04-26T01:46:51.140 回答