求助,layout cannot be resolved or is not a field报错

这一段代码setContentView(R.layout.activity_main);这一行报错,底下所有id下也有下划线
package com.example.keyboardscan;

import android.app.Activity;

import android.content.Context;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {

private TextView Letter;
private TextView ASCNumber;
private TextView ScanNumber;
private Button A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,
T,U,V,W,X,Y,Z,Space,Comma,Period;
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Letter = (TextView)findViewById(R.id.Letter);
ASCNumber = (TextView)findViewById(R.id.ASCNumber);
ScanNumber = (TextView)findViewById(R.id.ScanNumber);
如果把上面定义Button的那两行去掉就没问题,这是怎么回事呢?

第1个回答  2013-12-07
我用你的代码测试了一下,的确发现很多报错的地方!
原因分析:
查看Button定义,大眼看来的确没错,可是仔细分析代码中报错内容的时候,你会发现,都是R.***这个位置报错的,所以这里就是原因
分析结果:
你在定义Button的时候,其中的R这个Button,与系统文件R.java这里的R类有冲突,在你的主类中,R优先被识别为Button而不是R.java中的类R,所以索引不到后面的***(id或者layout)而报错
解决办法:
1 Button中的R,重新命名,不要与android系统类有冲突(推荐使用该方法)
2 在onCreate方法中,你在要用到R类的地方将其包名加上(如你的就写com.example.keyboardscan.R.***),就不会报错了本回答被提问者和网友采纳
相似回答