查找Drawable资源时出现NotFoundException

时间:2011-12-16 14:33:46

标签: android

我从android开始,我想按照in this answer所述向单元格添加边框。所以我创建了我的cell_background.xml文件,Eclipse在res\drawable中创建并包含

<?xml version="1.0" encoding="utf-8"?>
<shape
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape= "rectangle"  >
    <solid android:color="#000"/>
    <stroke android:width="1dp"  android:color="#ff9"/>
</shape>

读过drawable文件夹有几个问题后,我将其逐字复制到res\drawable-*dpi目录

现在,我的应用程序在以下行崩溃

Drawable drawable = Resources.getSystem().getDrawable(R.drawable.cell_background);

有这个例外

12-16 14:26:28.624: E/AndroidRuntime(533): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f020000

项目和模拟器都设置为v3.0

有什么想法吗?我已经清理并重建了该项目,但它仍然崩溃。

3 个答案:

答案 0 :(得分:7)

问题是您使用Resources.getSystem(),它将为您提供对系统资源的引用。您应该使用context.getResources()代替。

答案 1 :(得分:2)

尝试使用以下代码检查资源是否存在

int drawRes = getDrawableResourceID(context, "cell_background"));
if(drawRes>0){
getResources().getDrawable(drawRes);
}

//To detect whether the reource exits in drawable or not
    public static int getDrawableResourceID(Context context,
                String identifierName) {

            return context.getResources().getIdentifier(identifierName,
                    "drawable", context.getPackageName());
        }

答案 2 :(得分:1)

不确定关于放入Drawable文件夹的问题我没有任何问题,仍然尝试使用这种方式我一般使用

Drawable drawable = getResources().getDrawable(R.drawable.cell_background);