我刚刚开始玩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();
}
});
}
}
答案 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)
做这些事情,其中任何人都会帮助你