1

我对 Android 开发非常陌生(尽管对 Cocoa Touch 有一些 Obj-C 经验)。当我遇到以下语法错误时,我正在测试我的第一个 Android 应用程序:

令牌“100000”的语法错误,VariableDeclaratorId 无效

标记“11”的语法错误,删除此标记

标记“2”的语法错误,删除此标记

令牌“5000”的语法错误,VariableDeclaratorId 无效

令牌“61”上的语法错误,VariableDeclaratorId 无效

令牌“69”上的语法错误,无效的 VariableDeclaratorId

当我双击它们时,它们似乎在文件中R.java,我不知道它们是如何引起的。

   public static final class drawable {
        public static final int 100000=0x7f020000;
        public static final int 11ba=0x7f020001;
        public static final int 2values=0x7f020002;
        public static final int 5000=0x7f020003;
        public static final int 61=0x7f020004;
        public static final int 69=0x7f020005;
   .....

如果有人能说出这是如何引起的,那就太好了。

[更新]

MarsAtomic认为这是由于未遵循 Android 资源的命名约定,并且可能将 rawables 命名为“5000”、“69”,事实上,在这种情况下确实如此。

更改名称后,这些异常不再发生。

但我仍然想知道为什么在数字名称中使用图像会触发这种情况。谢谢。

4

7 回答 7

4

我的评论不知何故消失了,但是……每种语言都有命名约定。约定通常只是基于一些半任意的启发式,因为你必须有规则(例如,'a1' 表示变量名,而名为 '1' 的变量可能与值混淆)。

您可以接受这个答案作为规范答案或不接受 - 就个人而言,我不介意谁得到什么功劳。

于 2013-05-05T09:53:07.113 回答
3

更改名称后,此异常不再发生。

但我仍然想知道为什么会这样。

因为这些资源的名称在自动生成的 Java 源文件 ( ) 中用作字段名称R.java,它们不是有效的 Java 字段名称。Java 字段名称必须以字母开头。JLS中字段名称中允许的字符的详细信息。

(真的,MarsAtomic应该为此获得荣誉,但似乎没有看到重新发布的问题。)

于 2013-05-05T09:46:52.140 回答
2

您不能声明以数字开头的变量名。

于 2013-05-05T09:44:57.077 回答
0

如果您在

public static final class drawable {

最常见的错误是.pngres 文件夹中的命名文件以数字开头。

例如1_pic.png2015_22_22pic.png等等。

正确的路:pic_1.png

于 2015-02-22T11:50:20.087 回答
0

R.class 是自动生成的,如果您更改其中的某些内容,它将无法正常工作。

你清理和构建您的项目。

于 2013-05-05T13:09:07.080 回答
0

在\ res \ 内的所有文件夹中,查找名称与其他文件不同的文件,如00000002。如果找到,只需将其删除。然后在eclipse中点击你的项目名称,然后按F5键刷新。因此错误将消失,您的 R 文件将被更新。

于 2016-03-07T15:51:55.690 回答
-2

查看 RES 目录。您可能有一个具有上述数字序列的文件,例如 00000002。要解决此问题,只需将其从文件夹中删除即可。

于 2016-03-01T20:19:07.910 回答