4

我刚刚将我的 Android 项目的构建目标升级到 API 17,我现在收到关于 setBackgroundDrawable 被弃用的警告。答案似乎是使用 setBackground,但这在旧版本中不可用。

使用新方法是否有任何实际优势,或者 Google 只是想更改名称?如果两者工作相同,我认为将我的代码与平台版本检查或反射复杂化没有任何意义。

4

1 回答 1

8

使用新方法是否有任何实际优势,或者 Google 只是想更改名称?

他们似乎只想更改名称,请查看源代码

public void setBackground(Drawable background) {
    //noinspection deprecation
    setBackgroundDrawable(background);
}

@Deprecated
public void setBackgroundDrawable(Drawable background) { ... }

所有的工作仍然在setBackgroundDrawable(). 目前,您可以忽略弃用警告,但要了解将来某些 APIsetBackgroundDrawable()将被删除。


如果您好奇,setBackgroundResource(int resid)只需从资源 ID 创建一个可绘制对象并调用setBackground()(再次调用setBackgroundDrawable())...

于 2012-12-05T18:14:33.167 回答