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.
当前回答
在我的情况下:res/someLayout.xml文件出错,然后我解决它。 然后清除该项目。 错误消失了。
其他回答
这个问题似乎有很多原因。最近,我添加了一个名为NewActivity的活动来测试。这创建了一个名为res/menu/new.xml的文件,gradle不喜欢这个名字,因为new是一个保留字。
gradlew戒毒
or
“工具”->“Android”->“同步项目与Gradle文件”
这些绝对是值得尝试的好方法,但是在运行这些命令之前,您可能需要解决一些其他问题。
如果你在移动java文件或目录到其他位置后看到这个错误,那么你可以保证Android Studio已经混淆了。你猜怎么着?撤销这些操作并不能解决问题。
所以你试着戒毒,但没用。
重启也不行。
但是试试文件->无效缓存/重新启动…->失效并重启
Android Studio维护哪些文件依赖于哪些其他文件的信息。由于移动文件没有正确实现,因此移动文件会导致错误。这还不是全部:这些依赖项的缓存被用于加速构建。
这意味着您不仅必须重新启动,而且还需要使这些缓存失效以恢复(或者更准确地说,重新构建)正常运行。
R.java文件包含xml和java页面之间的链接。只有在某些资源文件出现问题时,才会出现“R无法解决”。因此,最好和有效的方法是删除最后完成的xml或绘制在res文件。然后再根据android编码规范从那里开始。这是唯一的办法。有效而正确的方法。
也可以使用Git来正确地跟踪代码。
确保项目中有AndroidManifest.xml。
我导入的项目还没有manifest,所以Android Studio不会将其识别为Android项目。然后我在GIT中拉了这个项目,它下载了清单,但仍然不能工作。 然后我重新启动Android Studio,它说“框架检测到Android”。
确保你的项目配置为Android项目。
这是一个非常古老的问题,但它仍然经常发生,这里没有真正全面的答案。
我遇到这个问题的次数比我想承认的要多。它可能是由各种各样的问题引起的,大多数问题都与您的项目结构不符合预期有关。下面是我遇到的所有问题的清单:
从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来做到这一点。
推荐文章
- 如何分配文本大小在sp值使用java代码
- Manifest合并失败:uses-sdk:minSdkVersion 14
- 为什么Android工作室说“等待调试器”如果我不调试?
- 如何检查我的EditText字段是否为空?
- Android从图库中选择图像
- 后台任务,进度对话框,方向改变-有任何100%工作的解决方案吗?
- Android:垂直对齐多行EditText(文本区域)
- Android无尽列表
- Android room persistent: AppDatabase_Impl不存在
- 错误:执行失败的任务':app:compileDebugKotlin'。>编译错误。详细信息请参见日志
- 在Android中使用URI生成器或使用变量创建URL
- 缩放图像以填充ImageView宽度并保持纵横比
- 列表视图的自定义适配器
- 在Android中设置TextView span的颜色
- 如何以编程方式在RelativeLayout中布局视图?