This is the most common error encountered while working with Android Eclipse ADT or Android Studio IDE. You get this error if R.class file is not generated under gen folder, this file is auto generated every time the build happens, if there is any error encountered while build you get R Cannot Be Resolved to a Variable.
There are many reasons that may cause this error. I am trying to list down as many reasons as I can to my knowledge.

1. R.java Class Import
Check if android.R import statements are present in any of your Java files under src folder, it is not required as R is static class, but many a time we do Ctrl + Shift + O which causes this import statement being added.
Eclipse somethings cries for these imports but just don't add them, the problem is due to some other stuffs like layouts or drawables.
2. Drawables
Drawables (images) or xml's contained here are the real culprits most of the times for such issues. You won't even see a red error cross displayed over the drawable folder (but if you clean and build your project you would find the error messages displayed under logCat console)
Check that images and XML files follows the below mentioned naming conventions,
- All file names must be in lower-cases
- Files under drawables must not contain any special characters other than _ (underscore)
- Files must not contain numeric values.

3. AndroidManifest.xml
If you have changed the package name for your app in the Manifest file, this may not generate R.class resulting in such a error. Make sure you clean and build.
4. Check Order of Export
Right-Click on you project
Project Properties
Java Build Path
Order and Export
5. Check if Android Target is set.
Right-click on your Project Folder.
Select Properties.
Select Android.
Check the box next to appropriate Project Build Target.
Click Apply and OK.
- Android Error Unexpected cast to Button: layout tag was FrameLayout
- ADT quit unexpectedly error on Mac OSX Android Eclipse SDK
- Parsing Data for android-21 failed unsupported major.minor version 51.0
- Android Studio Ctrl Shift o auto import not working
- java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
- Android : How to make TextView Scrollable
- This class should be public (android.support.v7.internal.widget.ActionBarView.HomeView) Lint Error
- Integrating Android Facebook SDK 3.17.2 Tutorial
- Android R Cannot Be Resolved To A Variable
- Android : Exception raised during rendering: action_bar API 22
- How to take screenshot on Android
- Read Text file from SD Card : Android Programming
- How to make Android EditText not editable
- Your Android SDK is out of date or is missing templates. Please ensure you are using SDK version 22 or later.
- The declared package does not match the expected package Eclipse
- Can't Run SDK Manager find_java.bat issue
- What is Android Toast.LENGTH_SHORT and Toast. LENGTH_LONG durations
- Android Emulator Soft Back button action using Computer keyboard
- Multiline EditText in Android Example
- Use 5G Network on Android Emulator
- Make Android TextView Clickable like Buttons
- How to empty trash in Android Device
- Android : Execute some code after back button is pressed
- Disable Fading Edges Scroll Effect Android Views
- How To Disable Landscape Mode in Android Application
- How to Get the List of Shells on Linux - Linux
- Android Eclipse This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in - Android
- Android : Remove ListView Separator/divider programmatically or using xml property - Android
- Java JDBC Select Multiple Records from table as List using PreparedStatement - Java
- How to know installed version of Homebrew - MacOS
- Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED - Android
- Redirect page using jQuery - jQuery
- Copy entire directory using Terminal Command [Linux, Mac, Bash] - Linux