Android:.getDrawable已弃用,最低SDK 17解决方案?

时间:2015-11-19 21:51:45

标签: java android

我目前正在阅读Head First Android开发书籍。

这个问题与第13章中的代码有关,并带有指向以下特定文件的链接:

https://github.com/dogriffiths/HeadFirstAndroid/blob/master/chapter14/BitsAndPizzas/app/src/main/java/com/hfad/bitsandpizzas/CaptionedImagesAdapter.java

以下代码使用不推荐使用的方法.getDrawable:

Drawable drawable = cardView.getResources().getDrawable(imageIds[position]);

对于新的SDK,可以通过将代码更改为:

来解决
Drawable drawable = cardView.getResources().getDrawable(imageIds[position], null);

但是,我无法让代码工作的最小SDK为17,并尝试使用ContextCompat。我发现之前使用的兼容性解决方案已被弃用。

谢谢

1 个答案:

答案 0 :(得分:3)

不推荐使用

ContextCompat.getDrawable(Context context, int id),这是在此方案中使用的正确方法。

如果出于某种原因您不想使用ContextCompat,您可以随时使用the same code it uses

public static final Drawable getDrawable(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 21) {
        return context.getDrawable(id);
    } else {
        return context.getResources().getDrawable(id);
    }
}