比较 API 21 x API 23 中的资源

Comparing resources in API 21 x API 23

我的应用程序 运行 在 API 23 及更高版本中运行良好,但是当我在 运行 21 中 运行 它时似乎存在错误。我已将其缩小到这段代码:

if (myButton.getBackground().getConstantState() == ResourcesCompat.getDrawable(getResources(), R.drawable.myDrawable, null).getConstantState())
{...}

在 API 21 中它总是 returns false(即使它不应该),所以我猜这些方法之一在 API 21 中不起作用。

有什么想法吗?是否有任何其他方法(与 API 21 及更高版本兼容)来检查按钮的背景是否分配了特定的可绘制对象?

ps: 我的 minsdk 是 21,但是 Lint 没有给我任何警告。

您可以尝试使用 ContextCompat:

ContextCompat.getDrawable(yourContext, R.drawable.myDrawable).getConstantState();