【问题标题】:How to solve "itemTag cannot be resolved or is not a field"?如何解决“itemTag 无法解析或不是字段”?
【发布时间】:2014-04-10 00:34:13
【问题描述】:

在 strings.xml 文件中,我有这个:

<resources>
<string name="itemTag">1</string>
<string name="item2Tag">2</string>
</resources>

但是当我进入一个活动并尝试通过这个访问时:

ib.setTag(R.string.itemTag, "itemTag");

它给出了 itemTag 的错误:

itemTag cannot be resolved or is not a field

这是什么意思,我该如何解决?

编辑:代码:

public void changePicture(ImageButton ib) {

ib.setTag(R.string.itemTag, "itemTag");
getResources().getString(R.string.itemTag);
}

【问题讨论】:

    标签: java android xml string


    【解决方案1】:

    检查您的 java imports,您可能导入了一个与当前包中的 R.java 不同的 R.java

    使用 Eclipse 删除所有导入,然后 Ctrl+Shift+O(组织导入)并选择要导入的正确包。

    【讨论】:

      【解决方案2】:

      如果您尝试获取String,那么所有R.string.itemTag 对编译器来说都是int。如果您查看R 类,您会发现类似以下内容...

      public static class string {
          public static int itemTag = 0x30000;
      }
      

      以及您使用的所有其他 ID。您要做的是以下...

      getResources().getString(R.string.itemTag);
      

      您还应该尝试通过转到 Project > Clean... 来清理您的项目。

      【讨论】:

      • 问题是,我无法访问“itemTag”,它弹出上面的错误,你是说把getResources()放在activity中?
      • 是的,getResources() 是一个 Activity 方法。
      • 检查路径:“gen/your.app.package”你看到一个“R.java”文件吗?如果不是,则该项目尚未构建。如果您无法构建您的项目,那么您将遇到编译问题。
      • 我刚刚清理了项目,然后它说我需要导入 android.R,然后当我这样做时,每个其他 R.id.xxx 都说它“无法解析或不是字段” .
      • 您在“gen”文件夹中看到“R.java”文件了吗?如果没有更多细节,我无法看到更大的问题......可能有更多细节......通常没有“R.java”文件意味着您的“res”文件夹中有编译错误。
      猜你喜欢
      • 2022-01-09
      • 2015-02-03
      • 2014-03-27
      • 2014-01-05
      • 2016-05-20
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多