R.id 无法解析
Posted
技术标签:
【中文标题】R.id 无法解析【英文标题】:R.id Cannot be resolved 【发布时间】:2011-09-06 18:22:17 【问题描述】:我想应该对 android-Manifest.xml 文件或布局文件夹中的某些内容进行处理。我是Android新手,所以我不知道我应该写什么。
public class AndroidPong extends Activity implements OnClickListener
static String tag;
@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super .onCreate(savedInstanceState);
tag = getResources().getString(R.string.app_name);
fullScreen();
splashScreen();
@Override
protected Dialog onCreateDialog(int id)
// TODO Auto-generated method stub
return super .onCreateDialog(id);
@Override
public boolean onCreateOptionsMenu(Menu menu)
// TODO Auto-generated method stub
return super .onCreateOptionsMenu(menu);
@Override
public boolean onOptionsItemSelected(MenuItem item)
// TODO Auto-generated method stub
return super .onOptionsItemSelected(item);
@Override
protected void onStop()
// TODO Auto-generated method stub
super .onStop();
@Override
protected void onDestroy()
// TODO Auto-generated method stub
super .onDestroy();
void startGame()
setContentView(R.layout.game);// error
this .findViewById(R.id.Button01).setOnClickListener(this );//error
this .findViewById(R.id.Button02).setOnClickListener(this );//Error
void splashScreen()
setContentView(R.layout.splash);// error
this .findViewById(R.id.pongtable).setOnClickListener(this );//error
void gameMenu()
void fullScreen()
this .requestWindowFeature(Window.FEATURE_NO_TITLE);
this .getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
public static void debug(String debug)
Log.d(tag, debug);
<?xml version="1.0" encoding="utf-8"?>
<absoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<Button android:id="@+id/Button01"
android:layout_
android:layout_
<Button android:id="+id/Button02"
android:layout_
android:layout_
</absoluteLayout>
【问题讨论】:
你能发布布局 XML 文件吗?布局 XML 在/res/layout
中吗?布局 XML 文件是否称为 game.xml
和 splash.xml
?
game.xml schemas.android.com/apk/res/android" android:layout_ android:layout_height= "fill_parent">
我提供了一个链接,我从那里复制了此代码 java2s.com/Open-Source/Android/Game/android-pong-kt/… 在此没有 android manifest ,splash ,game xml 文件
在添加此类信息时尝试编辑您的问题。这样你就可以格式化它,让它漂亮漂亮,我们可以阅读它:)
@gary Buyn 我已经发布了 xml 文件
【参考方案1】:
如果你使用的是eclipse,这个问题已经被问过了
R cannot be resolved - Android error
【讨论】:
Eclipse 的问题在于它为android.R
添加了错误的导入。我在 OP 的示例中没有看到这一点(尽管根据我的经验,这是导致此错误的唯一原因,所以我没有 -1)。【参考方案2】:
您似乎遇到了两种不同类型的错误。我将首先解决您在问题标题中提到的问题。这与资源 ID 有关。
R.id 无法解析
当编译器找不到您为某些资源(如字符串、布局、菜单等...)引用的资源时,就会发生该错误。这通常是您可以尝试的一些事情的结果。
首先,确保您使用正确的名称来引用您的资源 ID。例如,您有 R.id.Button01。如果您使用它来引用按钮的 res id,请确保您在 XML 中的按钮具有属性 android:id="@+id/Button01"
其次,确保您的 XML 布局文件中没有错误。如果还有其他错误,Eclipse(我假设您使用的是 Eclipse)通常不会识别该项目的资源 ID 已创建。
如果您看不到任何类似这样的明显错误,请尝试清理您的构建。通过转到 Project -> Clean...
来执行此操作其他错误与您的 OnClickListeners 相关
this .findViewById(R.id.Button01).setOnClickListener(this );//error
this .findViewById(R.id.Button02).setOnClickListener(this );//Error
和
this .findViewById(R.id.pongtable).setOnClickListener(this );//error
这个错误更直接。您设置的点击监听器不正确。 setOnClickListener 方法将 OnClickListener 作为参数。如果你想设置一个新的,你需要传入一个你构建的新 OnClickListener。你可以这样做......
this.someButton.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
// whatever the button will do
);
【讨论】:
void startGame() setContentView(R.layout.game);这个 .findViewById(R.id.Button01).setOnClickListener(这个 ); //错误:此行有多个标记 // - id 无法解析或不是字段 // - Button01 无法解析或者是 this .findViewById(R.id.Button02).setOnClickListener(this ); //错误 我在布局 game.xml 中创建新的 xml 文件 schemas.android.com/apk/res/android" android:layout_ android:layout_ > 【参考方案3】:我今天也遇到了这个问题。我检查了上述所有答案,但没有任何效果。在我看来,R.java 文件没有被正确地重新生成(即使在 Project/Clean 命令之后)。没有为我的项目创建“R.id”类。
我终于设法通过使用 main.xml 布局文件上的 Graphical Layout 视图解决了这个问题(单击 main.xml 编辑器窗口左下方的 Graphical Layout 选项卡)。
我将一个虚拟字段(包括一个 id)拖到布局中并保存了它。砰!现在 Eclipse 正在按预期生成 R.id 类。我从 main.xml 中删除了虚拟字段,一切正常。
【讨论】:
【参考方案4】:我有两个用大写和小写命名的图像。它工作正常,我在我的项目中使用它们。我建了几次,它从不在乎。突然间不知什么原因它不再喜欢它们了。
它在控制台中显示:
res\drawable-hdpi\Image.png:文件名无效:必须只包含 [a-z0-9_.]
只要去掉大写字符就可以了。 我猜其他资源错误也会出现在控制台中。
注意:您还会在“问题”窗口中看到如下错误:
未解析的 aapt 错误!检查控制台的输出。
【讨论】:
【参考方案5】:一些技巧:
您之前可以使用 R.id,然后清理项目并重新构建它。我不建议自动构建。
在项目属性中,您可以在 /src 文件夹之前排序 /gen 文件夹。这将导致首先编译 gen 文件夹,因此将首先生成 R 并且可以反映您的更改。
确保您没有遇到任何其他类型的编译错误。
【讨论】:
以上是关于R.id 无法解析的主要内容,如果未能解决你的问题,请参考以下文章
Android HelloViews Spinner 教程 R.id 和 R.array 无法解决