首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Hello,图库教程-- "R.styleable不能被解析“

Android Hello,图库教程-- "R.styleable不能被解析“
EN

Stack Overflow用户
提问于 2009-11-12 03:29:21
回答 7查看 47.2K关注 0票数 37

在开发Hello,Gallery tutorial/sample应用程序时,在站点上执行following the instructions之后,Eclipse报告R.styleable无法解析。

此错误的原因是什么?如何修复或解决此错误?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-11-12 03:36:35

根据this thread,R.styleable已经从Android1.5和更高版本中删除。

有许多方法可以让样本工作,我找到的最简单的方法是Justin Anderson在上面链接的帖子中推荐的:

values创建一个新的名为"resources.xml“的XML文件,其中包含以下内容:

  1. 将XML文件放在res\
  2. 目录中(与ImageAdapter的构造函数一起),并包含以下内容(假设ImageAdapter类是在其自己的文件中定义的):

c.obtainStyledAttributes(R.styleable.Gallery1);ImageAdapter(ImageAdapter c) { mContext = c;TypedArray a= public mGalleryItemBackground =public 0);a.recycle();}

该解决方案基本上将styleable属性定义为应用程序本身的资源,并为其提供在应用程序中工作所需的结构。请注意,如果您只需省略这两行代码(在a.recycle();之前),应用程序就可以正常运行,所有这些代码所做的就是在Gallery中的图像周围设置一个灰色背景。

票数 69
EN

Stack Overflow用户

发布于 2010-05-06 15:41:37

出现此问题的原因是它们告诉您要放入res/values/attrs.xml的资源是:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="HelloGallery">
        <attr name="android:galleryItemBackground" />
    </declare-styleable>
</resources>

但是你得到了这个适配器,Eclipse找不到它,坦率地说,它没有任何意义:

代码语言:javascript
复制
public ImageAdapter(Context c) {
    mContext = c;
    TypedArray a = obtainStyledAttributes(android.R.styleable.Theme);
    mGalleryItemBackground = a.getResourceId(
            android.R.styleable.Theme_galleryItemBackground, 0);
    a.recycle();
}

那是因为你不应该有“机器人”。在资源之前,可设置样式的名称在这里是主题,但在实际的资源中是HelloGallery,galleryItemBackground将android放在可设置样式的名称和属性之间,如下所示: Theme_android_galleryItemBackground

因此,如果想让ImageAdapter方法与给定的资源一起工作,您应该像这样重写它:

代码语言:javascript
复制
public ImageAdapter(Context c) {
    mContext = c;
    TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
    mGalleryItemBackground = a.getResourceId(
            R.styleable.HelloGallery_android_galleryItemBackground, 0);
    a.recycle();
}

对于将来有关资源的问题(R.*无法解决类型错误),请检查/gen/R.java以了解资源实际命名的内容。

票数 12
EN

Stack Overflow用户

发布于 2014-06-08 16:36:13

我也有同样的问题,我在谷歌的自定义视图示例代码(PieChart)中发现了这个问题

代码语言:javascript
复制
import com.example.android.customviews.R;

当我注释导入行时,Eclipse将注意到错误:"R无法解析为变量“。所以你应该用类似于上面的语句来导入你的包。例如:

代码语言:javascript
复制
import your.package.name.R;

它为我的其他项目修复了类似的错误

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1717489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档