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.xmlsplash.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 无法解析的主要内容,如果未能解决你的问题,请参考以下文章

导入 com.projectname.R 无法解析

无法在每个活动上解析符号“R”[重复]

Android HelloViews Spinner 教程 R.id 和 R.array 无法解决

Android Intent 无法解析构造函数

无法解析 android.support.design。迁移到 AndroidX 后

nslookup 报告“无法解析 '(null)':名称无法解析”,尽管它成功解析了 DNS 名称