Android Studio: Gradle: error: cannot find symbol variable
AndroidGradleAndroid Gradle-PluginAndroid 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.