eclipse错误与android:id无法解析或不是字段

时间:2010-12-24 17:44:56

标签: android eclipse

我刚刚开始玩android开发,并且只是尝试制作一个按钮,我遇到了一个问题。 我在下面的代码中给出的错误就在“R.id.button1”上。 它表示id无法解析或不是字段。 我是否需要手动引用我在布局xml文件中创建的每个对象?我发现这确实有效,但对于我想制作的每个按钮来说似乎有点多了......

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */

 private Button button1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener()
        {
         public void onClick(View v)
         {
          finish();          
         }        
        });
    }
}

9 个答案:

答案 0 :(得分:9)

我一直在浪费很多时间(两周)因为同样的问题,直到我发现问题不是我的,而是Eclipse的问题。 我想很多人都有同样的问题。

试试这个:保存你的项目,关闭Eclipse然后再打开它。这么简单。

答案 1 :(得分:3)

  
    

我是否需要手动引用我在布局xml文件中生成的每个对象

  

是的,否则你将无法对这些观点做任何事情。实际上并没有那么糟糕。因此,每次在XML中创建视图,并且想要引用它时,请输入ID:

<View
    android:id="@+id/the_id"/>

然后,您可以使用R类从代码中引用它。您可以在示例中键入R.id.the_id然后 Ctrl + Shift + O 以使Eclipse自动导入所需的文件。

您可以使用Roboguice等框架来提高工作效率;不过,我认为这是为了懒惰的人。

答案 2 :(得分:2)

此答案不适用于此问题(查看您提供的代码)。只要添加它,如果其他人偶然发现这里和上面提到的答案没有帮助。

如果清理(Project - &gt; clean)没有帮助或保存并重新启动eclipse也无济于事,请检查以下错误导入。

import android.R;

哪些Eclipse有时会在自动导入时添加错误(Ctrl + Shift + O)。 删除该行(导入)并完成:D

答案 3 :(得分:1)

this EXCELLENT tutorial之后,我遇到了同样的问题。在阅读了Carmello的回答( 2011年9月17日.07:23 )之后,我只需点击File-&gt; Save All,瞧,'button0'是自动定义的,甚至是语法突出显示。

答案 4 :(得分:0)

如果未定义“R.id.button1”,那么您将收到编译错误,就像您看到的那样。如果您没有在布局中定义它,那么它将不会被定义。

您不必指定在布局中创建的每个对象,但如果您尝试从“R. *”引用它,则会执行此操作。您可以手动创建未在布局中指定的按钮和其他对象。

答案 5 :(得分:0)

我暂时遇到了同样的问题。 Plz,别忘了定义如下:

<View
android:id="@+id/button1" />

如果你在.java类中使用id。

Button b =(Button) findViewById(R.id.button1);

据说,xml文件中定义的id必须与findViewById()中的id匹配。

答案 6 :(得分:0)

转到'gen'文件夹下的'R.java'文件,检查你的'button1'是否出现在'id'类下面。如果没有,那么这可能是你得到错误的原因。当你使用语句“R.id。”确保它出现在相应的类下,在本例中是'id'类。

答案 7 :(得分:0)

R.id是一个生成的对象,它将int数字分配给资源。试试这个你的gen / mypackage / R.java并删除该文件。如你所见,它是重新生成的。此文件提供静态引用,其中上下文更多地是应用程序的动态状态。如果您有语法错误,将阻止自动重新生成该R.java文件,因此您将获得很多或R.错误。正如其他人所说,你可以点击保存所有图标或ctl + shift + s在Windows上。您可以清理项目项目/清理,这将清除95%的异常。是的eclipse是这样的错误,但netbeans不支持android那么好。 this link may help

祝你好运

答案 8 :(得分:0)

做这些事情,其中​​任何人都会帮助你

  1. 项目 - &gt;清洁, 右键单击 - &gt;修复项目属性
  2. 重启Eclipse
  3. 在清单中进行一些虚假修改并保存
  4. 检查您的控制台是否有任何错误消息
  5. 检查您的drawable文件夹,检查图像名称是否符合规则