import android.R in Eclipse : Why?

An excerpt from the documentation :

Eclipse sometimes likes to add an import android.R statement at the
top of your files that use resources, especially when you ask eclipse
to sort or otherwise manage imports. This will cause your make to
break. Look out for these erroneous import statements and delete them.

  • Unable to create converter for my class in Android Retrofit library
  • Android: write failed: EPIPE (Broken pipe) Error on write file
  • Android- Adjacent buttons in list view automatically clicked
  • Do I need to protect my Android app from being copied?
  • Is it possible to get resources inside a static context block?
  • Execution failed for task ':app:dexDebug'. org.gradle.process.internal.ExecException
  • My question : WHY? Why does eclipse keep on doing this?

    I have been developing Android applications using Eclipse for a quite some time now but I have never been able to understand why eclipse does such a thing.

    When I use Ctrl + Shift + O to organize my import statements, import android.R gets added automatically. And all of a sudden my correct code is suddenly covered in red errors, saying that R cannot be resolved. It can get really scary for a beginner as he has no idea what he did wrong.

    In another scenario, suppose there is something wrong with my layout files and is not being generated, it says that R cannot be resolved, as has not been generated due to the errors. As I move my cursor to any of the errors, it suggests me to import android.R.

    After working on Android for quite sometime now, I know that never to import android.R, but what I have never been able to understand why eclipse keeps on suggesting it, as frankly speaking, adding import android.R never solved any problem of mine. It just added to the existing problems, which used to be really painful during initial days of development.

    So, does anyone know the reason behind eclipse making the suggestion to make an incorrect import? Is it just a bug? I don’t think it’s a bug, as it would have got fixed at least after it was mentioned on the Android documentation.

    If it’s not a bug, then what is a real purpose of android.R? What does it exactly refer to?

    Your opinions/experiences will be really helpful!


  • Drawing on Canvas and save image
  • How do I change the style of the MediaRouteButton in the ActionBar?
  • Android logcat: Send log entries from device using email
  • Can't add library to my android project
  • Android Dual Sim Emulator
  • Make popup of the key pressed in a customized keyboard
  • 3 Solutions collect form web for “import android.R in Eclipse : Why?”

    This is not a bug. There are a few instances where android.R can be helpful and solve problems.

    android.R is an file like the one you have in your own projects. The one in your projects (your.packagename.R) holds references to the resources you have under your /res folder like layouts, drawables, XML files, raw files, strings etc.

    On the other hand, the android.R file holds references to certain default resources that Android has inbuilt, like simple_list_item_1.

    Eclipse suggests this and auto imports this sometimes as if your project’s R file hasn’t been generated due to an XML error or something, your code will be referencing a file that doesn’t exist. By importing android.R, eclipse makes sure your code references a class that exists. However, android.R is unlikely to have the same resources you did, and this will raise another set of errors.

    Eclipse will also always try to automatically import android.R in your class if you rename your package name via android tools and not rename base package name in your code with the same name because he will assume you have two R’s in your file.

    Try this…

    Window -> Prefs -> Java -> Editor -> Save Actions

    Uncheck “Organize Imports.” Hopefully that will do it.

    After this setting, it works for me.

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.