You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android从drawable资源取Bitmap,如何适配ContextCompat.getDrawable建议

该建议的含义
  • 你原来直接调用的getDrawable()方法是Android 6.0(API level 23)才新增的Context类方法,如果你的应用设置的minSdkVersion低于23,该代码在Android 5.1及更低版本的设备上运行时会直接抛出NoSuchMethodError崩溃,你当前测试能正常运行只是因为你用的测试设备系统版本≥23。
  • Android Studio提示你用的ContextCompat.getDrawable()是AndroidX兼容库提供的适配方法,内部已经自动处理了不同系统版本的逻辑差异,可以兼容所有符合AndroidX要求的系统版本,不需要你手动做版本判断,稳定性更高,是Android官方推荐的资源读取最佳实践。
代码修改方式

首先确认你的项目已经引入AndroidX兼容包(目前Android Studio新建项目默认都会引入,无需额外配置),修改后的代码如下:

// 注意第一个参数传入当前上下文实例,Activity内直接传this即可
Drawable drawable = ContextCompat.getDrawable(this, R.drawable.avatar_bpm);
// 增加类型判断和非空校验,避免强转异常或空指针
if (drawable instanceof BitmapDrawable) {
    Bitmap avatar = ((BitmapDrawable) drawable).getBitmap();
    // 此处写你后续使用avatar的业务逻辑
}

内容的提问来源于stack exchange,提问作者cat15ets

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:15:02