getIdentifier获取资源Id的踩坑之路

点滴记录 专栏收录该内容
34 篇文章 1 订阅

前提:
之前做项目遇到一个问题,就是关于帧动画来的,我是用Java来实现。实现该动画的工程作为另一个工程的引用。

先来说下 getIdentifier 函数:

int id= getResources().getIdentifier("pig", "drawable", "com.zjt.xxxxx");

第一个参数表示放入drawable文件夹中图片的名称,
第二个参数表示资源属性是ID或者是Drawable,
第三个参数表示包名。

如果找到了,返回资源Id,如果找不到,返回0 。

我的部分代码如下:

Drawable drawable = null;
        for(int i=1; i<=15; i++){
            int id = getResources().getIdentifier(imgName + i, "drawable", "com.zjt.xxx");
            drawable = getResources().getDrawable(id);
            anim.addFrame(drawable, 100);
        }
        anim.setOneShot(false);
        mCubeImg.setImageDrawable(anim);
        anim.start();

运行结果报错:android.content.res.Resources$NotFoundException: Resource ID #0x0, 也就是说通过getIdentifier获取的资源 id = 0,即表示获取资源id失败。
为什么呢,因为我的包名写错了,不应该写本工程的包名,而应该写成引用本工程的那个工程的包名。

  • 2
    点赞
  • 7
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值