android.content.res.Resources$NotFoundException: Resource ID #0xff412804
问题原因
-
该异常表示 Android 系统尝试通过资源 ID 查找资源,例如,颜色、图片等,但未查找到对应资源
-
其中,
0xff412804
是一个硬编码的整型颜色值,不是有效的资源 ID
问题复现
- 调用
setBackgroundResource(int resid)
方法时,传入了一个错误的资源 ID(颜色值)
TextView tvContent = findViewById(R.id.tv_content);tvContent.setBackgroundResource(0xff412804);
- 调用
getColor(@NonNull Context context, @ColorRes int id)
方法时,传入了一个错误的资源 ID(颜色值)
int color = ContextCompat.getColor(this, 0xff412804);
- 调用
getDrawable(int id)
方法时,传入了一个错误的资源 ID(颜色值)
Drawable drawable = getResources().getDrawable(0xff412804);
处理策略
- 注意避免颜色值与混淆 ID 资源,直接将颜色值作为资源 ID 传递
- 对于颜色,可以直接设置颜色值
// 设置背景颜色TextView tvContent = findViewById(R.id.tv_content);tvContent.setBackgroundColor(0xff412804);
// 设置文本颜色TextView tvContent = findViewById(R.id.tv_content);tvContent.setTextColor(0xffff0000);
- 加载颜色资源
Drawable drawable = new ColorDrawable(0xff412804);