【问题标题】:"id cannot be resolved or is not a field" error?“id 无法解析或不是字段”错误?
【发布时间】:2010-07-21 03:18:05
【问题描述】:

我不断收到此错误。我应该将id 设为一个字段吗?

我的代码是:

public void onCreate(Bundle icicle) 
{
    super.onCreate(icicle);
    setContentView(R.layout.main);
    ImageView mainimage = (ImageView) findViewById(R.id.mainanim);
    mainimage.setBackgroundResource(R.anim.mainanim);
    mainanimation = (AnimationDrawable) mainimage.getBackground();
}

你究竟是如何解决这个问题的?

【问题讨论】:

  • 如果您使用的是 Eclipse,错误不仅仅出现在“问题”视图中——它们还附加到特定文件,并且通常附加到文件中的特定位置。寻找红色错误指示器和波浪线下划线,以帮助找出错误所在。

标签: android eclipse sdk


【解决方案1】:

查看顶部的import 语句。如果你说的是import android.R,那就有问题了。它可能不是唯一的一个,因为这些“R”错误可能很棘手,但它肯定至少是问题的一部分。

如果这不能解决问题,请确保您的 eclipse 插件 (ADT) 和您的 android SDK 完全是最新的,通过从操作系统中手动删除该项目从模拟器/手机中删除它,然后清理该项目 (启动 Eclipse->Project->Clean...)。确保你的东西完全是最新的听起来很傻,但是早期版本的 ADT 和 SDK 有很多与 R 文件相关的烦人的错误,这些错误已经被清除了。

仅供参考,R 类中显示的内容是从您的项目 res(又名资​​源)文件夹中的内容生成的。 R 类允许您引用资源(例如图像或字符串),而无需到处进行文件操作。它也做其他事情,但这是另一个答案。 Android OS 使用类似的方案——它有一个资源文件夹,而 android.R 类是访问 android 资源文件夹中内容的方法。当在一个类中同时使用自己的资源和标准的 android 资源时,就会出现问题。通常你可以在顶部说import,然后只使用名称的最后一位来引用一个类(例如,import java.util.List 允许你在你的类中只写List,编译器知道你的意思是@987654326 @)。当您需要使用两个命名相同的类时,就像自动生成的 R 类一样,您可以导入其中一个,并且您必须在需要时完全限定另一个。通常我会为我的项目导入 R 文件,然后当我想要一个 android 资源时就说 android.R.whatever。

另外,重申一下 Andy,不要自动修改 R 文件。这不是它的用途。

【讨论】:

  • Mia,这里的诀窍是有两个类,都称为“R”。您不能同时导入它们,因为当您说R. 时,Eclipse(实际上是编译器)不会知道您指的是哪个类。为了解决这个问题,您可能应该删除import android.R 行,然后清理项目。然后找到所有仍然存在错误的地方并将您的代码从R. 更改为android.R. - 希望有帮助,这东西可能很棘手
【解决方案2】:

不要修改 R 类。该错误意味着您的 XML 布局在语法上存在问题,并且无法自动生成 R。尝试查看那里并发布您不确定的 xml 代码(如果有)。

编辑:也:从文件顶部的导入中删除“import android.R”(如果有)

【讨论】:

  • 另外:从文件顶部的导入中删除“import android.R”(如果有)
  • 在我的例子中,我通过添加一个新按钮编辑了 XML,但没有保存 activity_main.xml。保存后,MainActivity.java 的所有 R.id 值都可用。
  • 我还可以通过删除导致问题的 xml 文件并使用撤消将文件放回包资源管理器中来删除它。
  • 还有一点值得注意——在 Android Studio 中,Clean(而不是普通的 Build)可以解决这个问题。我不确定缓存规则是什么,但有时 build 似乎会以令人惊讶的方式抓住事物。
【解决方案3】:

一种可能的解决方案:-

总结:确保您使用的是import com.yourpkgdomainname.yourpkgappname.R 而不是import android.R

详细信息: 当我更改了在布局 XML 文件中的其他位置引用的标签的 ID 时,出现了问题。由于这个错误,R 文件最初停止生成。 Eclipse 在处理布局文件错误方面很糟糕。

当我更正 ID 引用时(几次清理项目并重新启动 Eclipse,我注意到我的导入包现在有:
import android.R

将其更改为以下修复了错误:
import com.example.app.R

【讨论】:

    【解决方案4】:

    我刚刚解决了我在布局文件夹中右键单击并单击选项验证的问题。会出现一些窗口,您只需单击 OK 就可以了。

    【讨论】:

      【解决方案5】:

      可能是您在布局目录中创建了一个新的 xml 文件,该文件名包含大写字母,这在布局目录下的 xml 文件中是不允许的。

      希望对您有所帮助。

      【讨论】:

        【解决方案6】:

        只是把它扔在那里,但尝试手动重新输入内容。您的引号可能是“错误”的,因为有一个相似的 unicode 字符看起来很相似但不是引号。

        如果您从网站复制/粘贴代码片段,这可能是您的问题。

        【讨论】:

          【解决方案7】:

          正如 Jake 所提到的,问题可能是因为复制/粘贴代码。 检查 res/layout 下的 main.xml。如果其中没有 id 字段,那么您就有问题了。 一个典型的例子如下

          <com.androidplot.xy.XYPlot
          android:id="@+id/mySimpleXYPlot"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_marginTop="10px"
          android:layout_marginLeft="20px"
          android:layout_marginRight="20px"
          title="A Simple Example"
          />
          

          【讨论】:

            【解决方案8】:

            有时 eclipse 可能会与同一目录中的其他项目混淆。

            只需更改包名(不要忘记在 Android 清单文件中也进行更改),确保目录中尚未使用包名。它可能会起作用。

            【讨论】:

            • R 无法解决的原因有很多。这也是原因之一。其他原因上面已经有解决办法了。
            【解决方案9】:

            我自己也遇到过这个。

            最后发现我的问题是我添加的一个 .png 文件,其中有一个大写字母,导致完全相同的问题。在我关闭它并打开 Eclipse 备份之前,Eclipse 从未标记过该文件。

            【讨论】:

              【解决方案10】:

              似乎是什么问题,我只是修复了我的问题,以防有人想知道 - 由于其他错误,我自动关闭了构建,当我创建一个新项目时,它说 R.layout.main 有问题需要导入R;作为一个新手,我自然而然地做到了。然后我手动构建,它与main有问题。尝试按原样构建您的程序,删除 import R 应该没问题。

              【讨论】:

                【解决方案11】:

                它给了我足够的痛苦,但我找到了解决方案:

                PROJECT ---> Clean ----> (Sele)
                

                【讨论】:

                  【解决方案12】:

                  main.xml(或定义您的项目的任何地方)确保R 项目的ID 使用@+id/... 定义这是一个带有按钮的示例:

                  <Button android:text="B1" android:id="@+id/button_one"
                          android:layout_gravity="center_horizontal|center"
                          android:layout_height="fill_parent" android:layout_width="wrap_content" />
                  

                  这些都很重要,因为:

                  • @ 必须在字符串之前
                  • + 表示如果不存在它将创建(无论您的项目是什么)

                  【讨论】:

                    【解决方案13】:

                    我曾经在 Java 类中工作时也遇到过这个错误。我的问题只是没有保存我的 xml 文件,其中包含引用。如果您在选项卡中同时打开了 xml 文件和 java 类,请检查以确保选项卡中的 xml 文件名没有 *。

                    希望这会有所帮助。

                    【讨论】:

                      【解决方案14】:

                      只需清理您的项目,以便自动生成 R。这对我有用。

                      【讨论】:

                        【解决方案15】:

                        我遇到了这个问题,但在我的情况下,它通过重新启动 eclipse 解决了。

                        【讨论】:

                          【解决方案16】:

                          对我来说,问题的原因是我的 drawable-hdpi 文件夹中有 2 个同名的图像。一旦我解决了这个问题,R.java 就会自行重建,问题就自动解决了。

                          【讨论】:

                            【解决方案17】:

                            选择“项目”选项卡并单击“自动生成”,以便激活“全部生成”选项,然后单击“全部生成”。始终以小写开头的 xml 文件名。

                            【讨论】:

                              猜你喜欢
                              • 2016-10-19
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 1970-01-01
                              • 2015-10-28
                              • 2011-06-11
                              • 2012-10-24
                              • 2022-01-09
                              相关资源
                              最近更新 更多