In every instance in all of my classes where I reference R.id.something, the R is in red and it says "cannot resolve symbol R". Also every time there is R.layout.something it is underlined in red and says "cannot resolve method setContentView(?)". The project always builds fine. It is annoying to see this all the time. I have read many other questions on here about something similar but most involved importing projects from Eclipse. I am using what I believe to be the most recent version of Android Studio and the project was created with Android Studio and worked without any "cannot resolve R" problems. I would like to know what causes this if anyone knows.


当前回答

我有未解决的R问题,因为相同的image.png文件在两个地方。一个在res>anim和相同的文件在res>drawable-hdpi。这导致R无法解决。 问题是我制作了一个启动画面图像,并反复将其从Moray图形目录直接移动到Android项目中。我一定是不小心把它扔进了res>anim文件夹。我通过从res>anim文件夹中删除重复的图像文件来解决这个问题,Android工作室纠正了自己。

其他回答

我确实做了一个项目,而且成功了 但在此之前,请尝试检查清单中的包名称,重新构建并清理项目。如果问题没有解决,那就放弃你的项目

在将gradle插件从1.3.1版本升级到

classpath group: 'com.android.tools.build', name: 'gradle', version: '2.2.1'

它迫使我改变了所有的引用,比如

import [applicationId].R;

to

import [package].R;

在我的库项目中,appcontext.getPackageName();停止正常工作。我用它来获得正确的应用程序资源通过反射,但升级gradle插件后,它开始返回特定口味的applicationId,而不是包…你可以在这里阅读更多相关内容。

R.java文件包含xml和java页面之间的链接。只有在某些资源文件出现问题时,才会出现“R无法解决”。因此,最好和有效的方法是删除最后完成的xml或绘制在res文件。然后再根据android编码规范从那里开始。这是唯一的办法。有效而正确的方法。

也可以使用Git来正确地跟踪代码。

这是一个非常古老的问题,但它仍然经常发生,这里没有真正全面的答案。

我遇到这个问题的次数比我想承认的要多。它可能是由各种各样的问题引起的,大多数问题都与您的项目结构不符合预期有关。下面是我遇到的所有问题的清单:

从Eclipse导入到Android Studio并不总是很顺利,尤其是旧版本的Android Studio。确保您使用了正确的目录树。对于一个适度成熟的应用程序,它应该是这样的:

AppName/        // AppName is your app's name, obviously
    .gradle/    // This is a compiler created directory. You should normally leave it alone
    .idea/      // Ditto
    build/      // This too
    gradle/     // And this
    app/
        build/
        libs/
        src/
            androidTest/   // Tests based on the Android instrumentation runner should go here
            main/
                java/
                    fully/           // Typically com
                        qualified/   // the domain name. Longer package 
                                     // names may have deeper folder trees
                            AppName/ // All your java files go here
                res/
                    drawable-*/      // One of these for each resolution you support
                    layout/          // All of your general layouts
                    menu/            // All of your menu layouts
                    values/          // All of your resource xml files
                    xml/             // PreferenceScreen layouts go here
                AndroidManifest.xml
            debug/         
            test/          // Pure jUnit tests should go here
        .gitignore
        app.iml
        build.gradle   // This is the gradle file you should be making most changes to
        proguard-rules.pro
    .gitignore
    build.gradle       // This gradle file should mostly be left alone
    gradle.properties
    gradlew
    local.properties
    AppName.iml
    settings.gradle

在您的IDE中可能不是这样。在文件树上面有一个下拉菜单,可以以不同的方式显示你的文件,在我的系统上,它默认是一个叫做Android的系统,它把你的文件分成不同的类型。从Project中更容易修复这类问题,甚至直接从操作系统的文件系统中更容易修复,因为Android Studio将只包含另一个文件夹的文件夹折叠到一行中。

特别是如果你改变了你的应用程序的名称,你需要确保源树main/java/com/domain/AppName被更新。还要确保AndroidManifest.xml中的包标签是正确的。

If there are errors in either your Gradle files or your AndroidManifest.xml, this will prevent Android Studio from properly building your resource files. Gradle files can be broken by upgrading Android Studio sometimes, especially from the pre-1.0 versions. Sometimes this is because it stops supporting older versions of the Gradle plugin, so you need to update your version numbers. It can sometimes be hard to find what the current versions are. As of today, 7/17/15, my apps are compiling fine with com.android.tools.build:gradle:1.2.3. This is in the dependencies block in the outermost gradle file,

如果你的AndroidManifest引用了一个不存在的可绘制或字符串资源或活动,它会中断并导致这个错误。有时,如果任何东西引用了不存在的可绘制资源或字符串资源,就会得到这个错误。

如果您的资源中有一个损坏的文件,或者一个无效的xml文件,您将得到这个错误。

根据我的经验,有时候Android Studio会莫名其妙地出现问题,你需要重新启动它和/或你的电脑。我不知道为什么,但有时确实有效。

如果您有两个具有相同名称的xml资源,并且位于不相互覆盖的目录中,您可能会遇到这个问题。例如,你可以在drawable-mhdpi和drawable-xhdpi中使用相同的名称,因为它们会根据目标设备的不同而相互覆盖,但是如果你在布局和菜单中使用相同的名称,就会产生问题。重命名或删除其中一个文件。

如果只有一些资源存在此问题,那么这些资源很可能在错误的目录中。

有一次我不得不完全重新安装Android Studio。我不知道出了什么问题,但它起作用了。

在一种情况下,我将整个项目移动到另一个目录,并将其作为一个新项目重新导入。我不知道出了什么问题,但它起作用了。

使用保留字作为名称的Xml文件可能会导致此问题。重命名或删除它们。

您的Gradle文件有几种方法可以最终引用您没有安装的构建工具版本。通过更改Gradle或下载适当的构建工具来纠正这一点。

最后,在你修复了任何错误之后,你需要清理你的Gradle项目。您可以通过转到顶部的Build菜单并选择Clean Project来做到这一点。

上面的答案对我没有帮助。我最终意识到问题在于Android Studio中缺少“build”文件夹。我在项目“iml”文件中发现了一些行,不包括“build/*”。删除这些错误后,生成文件就出现了,错误就消失了。