我刚刚下载并安装了新的Android SDK。我想创建一个简单的应用程序来测试它。

向导创建了以下代码:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

但是Eclipse给出了错误

R不能被分解

在网上

setContentView(R.layout.main);

Why?

PS:我在res/layout/下有一个名为main.xml的XML文件。


当前回答

如果清理项目不起作用,如果xml文件没有问题(如果它是一个新项目)。然后转到Androidmanifest.xml,编辑它并在行之间添加一些空格,保存它。现在清理项目,错误将消失。

这是因为陈旧的R.java文件。当我们编辑android manifest文件时,再次创建R.java。

其他回答

同样的事情也发生在我身上,我花了一天时间来解决这个问题。这真的是一个愚蠢的错误。我只是剪一下我的经验,希望对您有所帮助。首先,当你输入这个setContentView(r.b ayout.activity_to_do_list);听到你的起点R.l,那么eclipse应该为你打开一个这样的建议

你导入第二个不是layout-android。R。第二个是在项目中创建的,其中com.example.gridtest是项目包的名称。然后在代码中集中导入的部分

好的,看这个导入com.example。gridtest。r;这很重要。如果你已经导入了这个android。R然后移除它。谢谢,希望有用。(你不需要总是这样做,但如果你遇到这种问题,然后这样做,希望它会有所帮助)

一些答案建议重新启动计算机。我发现重启adb服务器就足够了——如果你刚刚更新了Android SDK,这一点尤其正确。

通过linux shell重启adb:

$ cd $ANDROID_SDK/platform-tools
$ ./adb kill-server
$ ./adb start-server

您可能需要重新启动Eclipse,以便重新连接到重新启动的adb服务器。如果Eclipse没有自动编译项目,您可能需要执行一个clean/build。

可能发生这种情况的另一个原因是:今晚,我遇到了可怕的错误,最终发现一个错误的鼠标拖动显然将我自己的包的一个类移动到了另一个包的层次结构中。在Eclipse环境中,可以搞砸自己的方法确实有无数种。

哦,上帝,我是Linux (ubuntu),我是这样解决的:

第一件事的问题是权限问题,我没有看到任何权限相关的错误,但这是问题。该工具没有可执行权限。

因此,这只是一个快速修复(如果您知道需要可执行权限的确切文件,则专门对它们应用ff命令)。

更改到你的sdk的目录,然后:

sudo chmod +x -R .

之后去项目->清洁->选择你的项目->清洁

这招对我很管用!

值得在AndroidManifest.xml中检查一下。属性包的值正确。

那就是:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

更改后,将重新生成R.java。