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

Mia*_*Mia 26 eclipse sdk android

我一直收到这个错误.我应该做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();
}
Run Code Online (Sandbox Code Playgroud)

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

Ham*_*amy 50

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

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

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

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

  • 米娅,这里的诀窍是有两个类,都叫做'R'.你不能导入它们,因为当你说'R`时,Eclipse(嗯,编译器确实)不知道你的意思.为了解决这个问题,您应该删除行`import android.R`,然后清理项目.然后找到所有仍然存在错误的地方,并将你的代码从`R`改为`android.R. - 希望有所帮助,这个东西可能很棘手 (3认同)

And*_*ang 44

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

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

  • 还:从文件顶部的导入中删除"import android.R"(如果有的话) (32认同)
  • 在我的例子中,我通过添加一个新按钮编辑了XML,但没有保存activity_main.xml.保存后,MainActivity.java的所有R.id值都可用. (3认同)

Doc*_*Doc 29

一种可能的解决方案:

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

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

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

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


小智 6

我刚刚修复了我的问题,右键单击布局文件夹并单击选项验证.一些窗口会出现,你只是clik好,没关系.


小智 5

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

希望这有帮助.