“id无法解析或不是字段”错误?

时间:2010-07-21 03:18:05

标签: android eclipse sdk

我一直收到这个错误。我应该让id成为一个领域吗?

我的代码是:

public void onCreate(Bundle icicle) 
{
    super.onCreate(icicle);
    setContentView(R.layout.main);
    ImageView mainimage = (ImageView) findViewById(R.id.mainanim);
    mainimage.setBackgroundResource(R.anim.mainanim);
    mainanimation = (AnimationDrawable) mainimage.getBackground();
}

你究竟如何解决这个问题?

17 个答案:

答案 0 :(得分:50)

查看顶部的import语句。如果你说的是import android.R,那就有问题了。它可能不是唯一的,因为这些'R'错误可能很棘手,但绝对肯定至少是问题的一部分。

如果没有解决问题,请确保您的eclipse插件(ADT)和Android SDK完全是最新的,通过手动将其从操作系统中删除,从模拟器/手机中删除项目,并清理项目(启动Eclipse-> Project-> Clean ...)。确保你的东西是完全最新的听起来很傻,但早期版本的ADT和SDK有很多与R文件有关的恼人的bug,这些bug已被清除。

仅供参考,R类中显示的内容是从项目res(aka资源)文件夹中的内容生成的。 R类允许您引用资源(例如图像或字符串),而无需在整个地方执行文件操作。它也做其他的事情,但这是另一个答案。 Android操作系统使用类似的方案 - 它有一个资源文件夹,类android.R是访问android资源文件夹中的东西的方式。在单个类中,您使用自己的资源和标准的android资源时会出现问题。通常情况下,您可以在顶部说import,然后使用名称的最后一位引用一个类(例如,import java.util.List允许您在类中编写List并且编译器知道你的意思是java.util.List)。当您需要使用两个命名相同的类时,就像自动生成的R类一样,那么您可以导入其中一个,并且只要您想要它就必须完全限定另一个。通常我导入我的项目的R文件,然后只是说android.R.whatever当我想要一个Android资源。

另外,重申Andy,不要自动修改R文件。这不是它的意思。

答案 1 :(得分:44)

不要修改R类。该错误意味着您的XML布局存在语法错误,并且无法自动生成R.尝试查看并发布你不确定的xml代码,如果有的话。

编辑:还:从文件顶部的导入中删除“import android.R”(如果有)

答案 2 :(得分:29)

一种可能的解决方案: -

摘要:确保您使用import com.yourpkgdomainname.yourpkgappname.R代替import android.R

详细信息:当我更改布局XML文件中其他位置引用的标签的ID时出现问题。由于此错误,R文件首先停止生成。 Eclipse在处理布局文件错误方面很糟糕。

当我更正ID引用时(项目清理几次并且Eclipse重新启动,我注意到我的导入包现在有:
import android.R

将其更改为以下修正错误:
import com.example.app.R

答案 3 :(得分:6)

我刚刚修复了我的问题,右键单击布局文件夹并单击选项验证。有些窗口会出现,你只需克服确定即可。

答案 4 :(得分:5)

可能是您在布局目录中创建了一个新的xml文件,该文件包含一个大写字母,该字母在布局目录下的xml文件中是不允许的。

希望得到这个帮助。

答案 5 :(得分:3)

把它扔到那里,但尝试手动重新输入。您的引号有可能是“错误的”,因为类似的unicode字符看起来很相似,但不是引号。

如果您从网站上复制/粘贴代码snippits,那可能是您的问题。

答案 6 :(得分:3)

正如Jake所提到的,问题可能是因为复制/粘贴代码。 检查res / layout下的main.xml。如果那里没有id字段那么你就有问题了。 一个典型的例子如下

<com.androidplot.xy.XYPlot
android:id="@+id/mySimpleXYPlot"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="10px"
android:layout_marginLeft="20px"
android:layout_marginRight="20px"
title="A Simple Example"
/>

答案 7 :(得分:3)

有时候eclipse可能会与同一目录中的其他项目混淆。

只需更改包名称(不要忘记更改Android清单文件),确保目录中尚未使用包名称。它可能有用。

答案 8 :(得分:2)

main.xml中(或定义项目的任何位置),确保R项目的ID定义为@+id/...以下是一个带按钮的示例:

<Button android:text="B1" android:id="@+id/button_one"
        android:layout_gravity="center_horizontal|center"
        android:layout_height="fill_parent" android:layout_width="wrap_content" />

其中每一项都很重要,因为:

  • @必须位于字符串
  • 之前
  • +表示如果不存在(无论您的项目是什么),它都会创建

答案 9 :(得分:2)

只需清理您的项目,即可自动生成R.这对我有用。

答案 10 :(得分:2)

当我在Java类中工作一次时,我也遇到了这个错误。我的问题只是我的xml文件及其中的引用未被保存。如果在选项卡中同时打开了xml文件和java类,请检查以确保选项卡中的xml文件名没有*。

希望这有帮助。

答案 11 :(得分:2)

它给了我足够的痛苦,但我找到了解决方案:

PROJECT ---> Clean ----> (Sele)

答案 12 :(得分:2)

似乎是什么问题,我只是修好我以防万一有人想知道 - 由于其他错误我自动关闭构建,当我创建一个新项目时它说R.layout.main有问题需要导入R等我自然而然地作为一个新手。然后我手动建立它与主要问题。尝试按原样构建程序,删除导入R,它应该没问题。

答案 13 :(得分:2)

我自己也遇到了这个问题。

最后发现我的问题是我添加的.png文件中有一个大写字母,导致完全相同的问题。在我关闭文件并重新打开Eclipse之前,Eclipse从未标记过该文件。

答案 14 :(得分:1)

我有这个问题,但在我的情况下,它通过重启日食来解决。

答案 15 :(得分:0)

对我来说,问题的原因是我的drawable-hdpi文件夹中有两个同名的图像。一旦我解决了这个问题,那么R.java就会重建自己并且问题会自动解决。

答案 16 :(得分:0)

选择“项目”选项卡,然后单击“自动构建”,以激活“构建所有”选项,然后单击“构建全部”,并始终以小写字母启动xml文件名。