49

我试图使用一些在线教程来解决多种布局。问题是只要只有一个 XML 文件,我的程序就可以正确构建和编译。当我添加多个 XML 文件时,我收到错误提示“activity_main 无法解析或不是字段”setContentView(R.layout.activity_main);

事实上,我之前使用的每个项目R.*现在都在报告错误。我不知道出了什么问题。谁能建议需要做什么?

编辑1:我尝试清理和重建项目,但这没有帮助。另外,我正在导入正确的R.java文件,如mypackage .R.java

根据@RubberDuck 的评论,我再次删除文件后,在构建项目后正在生成 R.java 文件。但是,当我创建新的 XML 文件并在其中添加元素、构建项目时,R.java 会被删除。

4

29 回答 29

90

我遇到了同样的问题,通过替换R显然com.example.appname.R将您的包参考放在那里来解决。或者只是将此行添加到您的文件中:

import com.your.package.R

或者更好的是,如果存在,请尝试从代码中删除此行:

import android.support.compat.R
于 2013-05-25T09:25:59.263 回答
38

检查您是否不小心导入了 android.R。

于 2013-04-16T19:12:49.313 回答
24

在 2019 年我遇到了同样的问题,我搜索了互联网,发现了以下我与大家分享的内容。

在 android studio 中,字母 R 代表资源,并且由于构建过程无法与您的项目同步资源而发生此错误。换句话说,这个错误是当 Android Studio 不能正确生成你的 R.java 文件时引起的。当您将代码转移到另一个系统或第一次构建 android 项目时,会发生此问题。因此,当您创建新活动或新类时,您会看到一条错误消息,例如“无法解析符号 r”,并带有红色下划线。

您可以在下面找到修复 android studio 中无法解析符号 r 的可能方法。

将项目 Gradle 更新到最新版本始终使用最新版本的 Gradle 以正常工作 android studio。

将项目与 Gradle 文件同步更新 Gradle 插件后,您需要将项目与 Gradle 文件同步。打开 android studio 并点击Files > Sync Project with Gradle Files 选项

清理并重建项目 最有效的解决方案是最简单的:清理并重建您的项目。从 Android Studio 工具栏中选择Build > Clean Project,稍等片刻,然后通过选择Build > Rebuild Project来构建您的项目。

Invalidate Caches / Restart 如果您在移动一些文件和目录后遇到此错误,那么R.layout错误可能是由 Android Studio 的缓存与您项目的当前布局不匹配引起的。如果您怀疑可能是这种情况,请选择File > Invalidate Caches / Restart > Invalidate and Restart从 Android Studio 的工具栏中。资源名称的问题也可能会阻止正确创建 R.java 文件,因此请检查您没有多个具有相同名称的资源,并且您的文件名中没有包含无效字符。Android Studio 仅支持小写 az、0-9、句号和下划线,单个无效字符可能会导致整个项目出现 R.layout 错误,即使您实际上并未在项目中的任何位置使用此资源!

我的问题及其解决方案:就我而言,我应用了上述所有方法,但无法解决问题。因此,我开始了一个新项目,并一一粘贴了我的代码,并通过运行应用程序验证了我的代码。最后,当我第一次删除colors.xml中的代码并将下面的代码复制并粘贴到colors.xml文件中时,我得到了错误。

<color name="bg_login">#26ae90</color>
<color name="bg_register">#2e3237</color>
<color name="bg_main">#428bca</color>
<color name="white">#ffffff</color>
<color name="input_login">#222222</color>
<color name="input_login_hint">#999999</color>
<color name="input_register">#888888</color>
<color name="input_register_bg">#3b4148</color>
<color name="input_register_hint">#5e6266</color>
<color name="btn_login">#26ae90</color>
<color name="btn_login_bg">#eceef1</color>
<color name="lbl_name">#333333</color>
<color name="btn_logut_bg">#ff6861</color>

当我撤消更改时,错误再次消失。因此,我在 colors.xml 中的代码不是上面的代码,并且代码已经在 colors.xml 中,即

<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="bg_login">#26ae90</color>
<color name="bg_register">#2e3237</color>
<color name="bg_main">#428bca</color>
<color name="white">#ffffff</color>
<color name="input_login">#222222</color>
<color name="input_login_hint">#999999</color>
<color name="input_register">#888888</color>
<color name="input_register_bg">#3b4148</color>
<color name="input_register_hint">#5e6266</color>
<color name="btn_login">#26ae90</color>
<color name="btn_login_bg">#eceef1</color>
<color name="lbl_name">#333333</color>
<color name="btn_logut_bg">#ff6861</color>

“也许是因为我没有定义颜色原色”希望它会帮助像我这样的编程新手。

于 2019-08-13T05:01:28.113 回答
22

我尝试了什么:

  1. 检查每个 XML 文件中是否存在一些著名的已知错误。
  2. 多次清理项目。
  3. 将 Gradle 与项目文件同步。

什么有效:

1. 使缓存无效并重新启动。

于 2020-04-11T15:26:04.963 回答
15

如果您的 XML 包含错误,您生成的文件可能无法构建,请尝试删除它们的大部分内容并确保 id 和文件名不重复,并且不使用大写字母和空格。如果它有效,你可以开始添加东西。

于 2013-04-17T05:33:51.087 回答
8

我造成这个错误的愚蠢错误是我的文件中有错误的字符串。AndroidManifest.xml我保留了教程中设置的字符串,但在设置项目时使用了我自己的字符串。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="COM.YOU.YOURAPPNAME"
android:versionCode="1"
android:versionName="1.0" >
于 2015-07-01T14:06:08.767 回答
8

通过导入该行删除了我的错误

import com.example.myapplication.R;

您的导入行可能会有所不同,具体取决于您的项目名称,其中我的项目名称是myapplication

于 2020-04-09T10:26:19.290 回答
6

您正在导入无效的 R 类,请导入 yourpackage.R 类,例如 com.example.R

你导入 android.R 类而不是 yourpackages.R 到底发生了什么

于 2013-04-16T20:22:27.390 回答
4

Ivwd 只是删除了“import android.R;”行 并调用 Project->Clean... 这对我的 Win-7/x64 和 Eclipse Kepler 以及最后一个(02.2014)Android SDK 来说已经足够了

于 2014-02-15T15:06:32.200 回答
2

您正在导入无效的 R 类,请检查导入。

于 2013-04-16T19:12:11.863 回答
2

转到工具-> android-> 使用 gradle 文件同步项目,然后单击 S

于 2016-02-11T13:38:52.437 回答
2

就我而言,我不小心导入了我的库的 R. 类而不是我的应用程序模块的 R。编辑后,它已解决。

于 2019-01-25T08:56:38.580 回答
2

这是由于资源未正确加载而发生的,并且类似的问题也可能发生在任何视图中,因此以下是一些可用于消除此错误的技术:-

  • 清理你的项目,构建 -> 清理项目
  • 重建项目,构建 -> 重建项目
  • 打开清单并检查是否缺少任何资源
  • 如果缺少特定 id 的签入布局,请添加它
  • 如果上述步骤不起作用,则重新启动 android studio 并使缓存无效。

注意:在上述步骤中,最后一步肯定会解决这个问题。

于 2020-04-28T06:50:25.807 回答
1

在 Android Studio 中转到Tools-> Android->Sync project with gradle filesFile->Sync project with gradle files在最新的 Android Studio 版本中。

于 2017-02-04T20:29:21.683 回答
1

当您更改项目名称时会发生这种情况

就我而言,我只是改变

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="xxxx.newName"
于 2020-11-09T21:27:17.883 回答
0

布局文件可能存在问题,更正它并会出现自动生成的类。

于 2013-04-16T19:16:32.960 回答
0

我有几个建议:

  1. 确保除了与​​ R 相关的错误之外没有任何其他错误。右键单击 Eclipse 中的项目文件夹,Android 工具 -> 修复项目属性。

    2.检查以确保您导入了正确的 R。有时可以导入默认的 Android.R。

    3.检查布局 XML 文件中的错误。

于 2013-04-16T19:21:46.877 回答
0

感谢@RubberDuck 的评论和@Emil的回答,我能够找出问题所在。我的 XML 文件中大多数元素的 ID 完全相同。所以,我给他们每一个都重新命名了。此外,我的 XML 文件包含大写字母。文件名应该在 [a-z0-9_] 所以我也重命名了我的文件,问题就解决了。

于 2013-04-16T23:51:04.333 回答
0

这解决了我的问题,

apt-get install ia32-libs

并重新启动:)

未找到安卓 adb

于 2013-10-08T12:39:17.170 回答
0

或者你可以写

import.R.layout // 在顶部

它肯定会起作用

于 2014-06-07T18:00:00.107 回答
0

在我构建了我的项目并在互联网上挖掘了很多解决方案之后,我使用了 maven 作为构建工具。通过添加到 main_activity.xml 解决了我的问题

工具:上下文=“.MainActivity”

于 2015-11-07T10:39:37.380 回答
0

当将不适当的字符(/-一个斜杠)添加到 values/strings.xml 时,我得到了这个,当然,重命名有问题的资源很有帮助。还有一件更重要的事情 - 检查您设备上的日期和时间。

于 2016-08-03T05:49:05.133 回答
0

只需删除 import.android.R;

然后 R.layout.(XML LAYOUTNAME) 将变为蓝色

我花了好几个小时才发现这个错误

于 2016-09-07T16:14:24.863 回答
0

我有一个类似的问题。
从 res 中删除了一些图片后,它突然发生了。可绘制的。我做了两件事。

  • 首先,我检查了可绘制文件夹中的所有图像,如果它们都有预览。我的一个被损坏了。
  • 其次,我关闭了所有打开的android studio和模拟器​​。在那之后,一切都很好。
于 2016-11-30T10:04:22.483 回答
0

我删除了 import android.R 并添加了 import android.support.v7.appcompat.*;

但是,这必须在通过右键单击项目导入 appcompat 并导入后完成

于 2017-05-12T02:12:47.493 回答
0

发生过一次。不知道原因。

Build> Clean Project 为我消除了错误。

于 2017-06-18T11:51:29.473 回答
0

您的 gradle 或 build 都需要知道资源在哪里。

于 2018-06-07T01:16:30.340 回答
0

清理项目并与 gradle 同步(无结果)后,我删除了所有导入语句,并使用 alt+Enter 将它们带回。

于 2019-10-08T11:04:09.793 回答
0

首先执行此操作 --> 从 Android Studio 工具栏中选择 Build > Clean Project,稍等片刻,然后通过选择 Build > Rebuild Project 来构建您的项目。

如果问题未解决,则从 Android Studio 的工具栏中执行此操作 --> File > Invalidate Caches / Restart > Invalidate and Restart。

于 2020-06-29T08:52:23.383 回答