Android Studio: Gradle: error: cannot find symbol variable

AndroidGradleAndroid Gradle-Plugin

Android Problem Overview


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.

Android Solutions


Solution 1 - Android

You shouldn't be importing android.R. That should be automatically generated and recognized. This question contains a lot of helpful tips if you get some error referring to R after removing the import.

Some basic steps after removing the import, if those errors appear:

  • Clean your build, then rebuild
  • Make sure there are no errors or typos in your XML files
  • Make sure your resource names consist of [a-z0-9.]. Capitals or symbols are not allowed for some reason.
  • Perform a Gradle sync (via Tools > Android > Sync Project with Gradle Files)

Solution 2 - Android

If you are using multiple flavors?

> -make sure the resource file is not declared/added both in only one of the flavors and in main.

Example: a_layout_file.xml file containing the symbol variable(s)

src:

flavor1/res/layout/(no file)

flavor2/res/layout/a_layout_file.xml

main/res/layout/a_layout_file.xml

This setup will give the error: cannot find symbol variable, this is because the resource file can only be in both flavors or only in the main.

Solution 3 - Android

If you are using a String build config field in your project, this might be the case:

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

If you declare your String like above it will cause the error to happen. The fix is to change it to:

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

Solution 4 - Android

Open project in android studio click file and click Invalidate Caches/Restart

Solution 5 - Android

make sure that the imported R is not from another module. I had moved a class from a module to the main project, and the R was the one from the module.

Solution 6 - Android

Make sure you have MainActivity and .ScanActivity into your AndroidManifest.xml file:

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

Solution 7 - Android

Make sure your variables are in scope for the method that is referencing it. For example I had defined a textview locally in a method in the class and was referencing it in another method.

I moved the textview definition outside the method right below the class definition so the other method could access the definition, which resolved the problem.

Solution 8 - Android

Another alternative to @TouchBoarder's answer above is that you may also have two layout files with the same name but for different api versions. You should delete the older my_file.xml file

my_file.xml
my_file.xml(v21)

Solution 9 - Android

Make sure that the control you are referring to in the XML layout file really exists, even if it's not being used.

I had this after when I did "removed unused resources" refactory.

For example, you will get this error if there is no progressBar in the layout.

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

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

Solution 10 - Android

Please check you accidentally added the XML file into the layout folder.

Solution 11 - Android

Make Sure your package name correct at top, wrong package name may cause this issue.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser2668638View Question on Stackoverflow
Solution 1 - AndroidBLaZuREView Answer on Stackoverflow
Solution 2 - AndroidTouchBoarderView Answer on Stackoverflow
Solution 3 - AndroidSean GoudarziView Answer on Stackoverflow
Solution 4 - AndroidRanaUmerView Answer on Stackoverflow
Solution 5 - AndroidAlberto MView Answer on Stackoverflow
Solution 6 - Androidjulien bouteloupView Answer on Stackoverflow
Solution 7 - AndroidJazzmineView Answer on Stackoverflow
Solution 8 - AndroidBond JamesView Answer on Stackoverflow
Solution 9 - Androidlive-loveView Answer on Stackoverflow
Solution 10 - Androidjerald jacobView Answer on Stackoverflow
Solution 11 - Androidfazal ur RehmanView Answer on Stackoverflow