R 无法解析 - Android 错误

我刚刚下载并安装了新的 Android SDK。我想创建一个简单的应用程序来测试驱动器。

向导创建了以下代码:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

但是Eclipse给了我错误

R 无法解析

在线

setContentView(R.layout.main);

为什么?

PS:我确实在res/layout/下有一个名为main.xml的 XML 文件。

答案

在也解决了这个问题之后,我在 Android 文档中找到了以下说明:

http://source.android.com/source/using-eclipse.html

* 注意:Eclipse 有时喜欢在使用资源的文件顶部添加 “import android.R” 语句,尤其是当您要求 Eclipse 对导入进行排序或管理时。这将导致您的品牌受损。请注意这些错误的导入语句并将其删除。*

在浏览 Android 示例教程时,我经常会使用Ctrl + Shift + O命令 “组织导入” 并生成任何缺少的导入语句。有时,这会生成不正确的 import 语句,该语句会隐藏在生成时自动生成的R.java类。

每当我遇到 R 的问题时,都不会生成 R 甚至消失,这是由于 XML 布局文件中的某些问题导致无法构建应用程序。

每当你得到

R 无法解析

然后检查/res目录,并且必须有一些文件包含某些错误,并阻止了该应用程序的生成。例如,它可能是布局文件,或者可能是由于缺少某些资源,但是您已经在 XML 文件中定义了它。

如果在文件夹 res / drawables-mdpi 之类的文件夹中还有其他甚至未使用(!)或未引用(!)的图像,这些图像不符合文件命名约定(可能仅包含 [a-z0-9_。]),则 R.java 类可能不会生成,从而导致所有其他所引用帖子的事件链。希望能帮助到你!

我的项目一开始就包含一个 r.java。,R.layout.main 工作正常。但是,在添加一些代码后,它不起作用,并且错误是 R.layout.main 无法解决。是什么问题?

看你的进口。该行可能是:

import android.R;

将在那里。如果是这种情况,请将其删除,这样您的项目将不使用默认的 Android Resources 类来解析 R,而是使用从 / res / 文件夹自动生成的 R 来解析。

还有可能导致此问题的另一件事:

我安装了新的 ADT(v。22)。它停止创建包含R.java gen文件夹。解决方案是从 Android SDK Manager 安装新的 Android SDK 构建工具。

解决方案在这里找到

R.java是 Android Eclipse 插件在构建应用程序时创建的文件。 R.java在 “gen” 目录下创建。该文件是根据 “res” 目录中的信息生成的。如果运行,请在 Eclipse 菜单上选择 “项目”->“清洁...”,它将删除并重新生成R.java文件。

当您在AndroidManifest.xml文件中更改程序包名称时,会发生 “无法解决 R” 问题。它使用您的 Android 包名称在 “gen” 目录下创建一个子目录,用于存储R.java文件。

Eclipse 执行干净时可能会遇到问题,因为当您更改 Android 程序包名称时,它对R.java文件的位置感到困惑。您可以重命名gen下的子目录以匹配您的新软件包名称,也可以将软件包名称改回旧名称。进行清理,然后将包名称更改为所需的新名称。如果您在更改程序包名称时阻止 Eclipse 尝试构建,则此方法最有效。在 “项目” 菜单下,取消选中 “自动构建” 选项,并在 “清洁...” 对话框询问是否应 “立即开始构建” 时取消选中该框,以便在更改时不尝试构建包名称。更改名称后,可以重新打开 “自动构建”。

请注意,如果您的AndroidManifest.xml文件包名称与 Java 包名称不匹配,Eclipse 将最终自动添加 “import < 您的 Android 包名称> .R;”。在所有具有 R 引用的.java文件中,如果您更改了AndroidManifest.xml包名称,则 Eclipse 有时不会更新所有这些已添加的导入。如果发生这种情况,请使用 Eclipse 重构( ALT + Shift + R )将其中一个 Java 文件中的 import 语句更改为新的AndroidManifest.xml包名称。最好在禁用 “自动构建” 的情况下执行此操作。

威尔说的是对的

R 是一个自动生成的类,其中包含用于标识资源的常量。如果您没有 R.java 文件(使用 1.5 SDK 在 > Eclipse 中为 gen / eu.mauriziopz.gps / R.java),建议关闭并重新打开项目,或转到 > Project> Build all (并按照 > Josef 的建议选择 “自动构建”)。如果那不如尝试创建一个新项目不起作用,如果重新创建了问题,然后再 > 在此发布,我们将进行更详细的介绍。

但我发现还有另一个问题导致了第一个问题。 SDK 目录中的工具没有执行权限,因此就好像 Eclipse 不存在该工具一样,因此它没有构建R.java文件。

因此,修改权限并选择 “自动构建” 即可解决该问题。

R 是一个自动生成的类,其中包含用于标识资源的常量。如果您没有 R.java 文件(在带有 1.5 SDK 的 Eclipse 中为 gen / eu.mauriziopz.gps / R.java),则建议您关闭并重新打开您的项目,或者转到 “项目”>“全部构建”(然后按照 Josef 的建议选择 “自动构建”。如果那比尝试创建一个新项目还行不通,那么如果重新创建问题后再在此处发布,我们将进行更详细的介绍。

关闭所有文件,清理项目,重新启动 Eclipse。

值得在AndroidManifest.xml检查。该属性package具有正确的值。

那是:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

更改后,将重新生成R.java