对于新的android API 22,getResources().getDrawable()现在已被弃用。现在最好的方法是只使用getDrawable()。
什么改变了?
对于新的android API 22,getResources().getDrawable()现在已被弃用。现在最好的方法是只使用getDrawable()。
什么改变了?
当前回答
根据要加载的绘图类型,您可以选择以正确的方式(以及将来的证明)处理此弃用:
A) 具有主题属性的绘图
ContextCompat.getDrawable(getActivity(), R.drawable.name);
您将按照“活动”主题的指示获得一个样式化的Drawable。这可能就是你需要的。
B) 无主题属性的绘图
ResourcesCompat.getDrawable(getResources(), R.drawable.name, null);
你会像以前一样得到你的无样式抽屉。请注意:ResourcesCompat.getDrawable()未被弃用!
EXTRA)具有来自另一个主题的主题属性的绘图
ResourcesCompat.getDrawable(getResources(), R.drawable.name, anotherTheme);
其他回答
对于一些即使在应用了这个线程的建议(我以前也是这样的)之后仍然需要解决这个问题的人,请在Application类上添加这行,onCreate()方法
AppCompatDelegate.setComptVectorFromResourcesEnabled(true)
正如这里和这里所建议的,有时需要从资源中访问向量,尤其是在处理菜单项等时
试试这个
ContextCompat.getDrawable(getActivity(), R.drawable.drawable_resource_name);
根据要加载的绘图类型,您可以选择以正确的方式(以及将来的证明)处理此弃用:
A) 具有主题属性的绘图
ContextCompat.getDrawable(getActivity(), R.drawable.name);
您将按照“活动”主题的指示获得一个样式化的Drawable。这可能就是你需要的。
B) 无主题属性的绘图
ResourcesCompat.getDrawable(getResources(), R.drawable.name, null);
你会像以前一样得到你的无样式抽屉。请注意:ResourcesCompat.getDrawable()未被弃用!
EXTRA)具有来自另一个主题的主题属性的绘图
ResourcesCompat.getDrawable(getResources(), R.drawable.name, anotherTheme);
您可以使用
ContextCompat.getDrawable(getApplicationContext(),R.drawable.example);
这是我的工作
试试看:
public static List<ProductActivity> getCatalog(Resources res){
if(catalog == null) {
catalog.add(new Product("Dead or Alive", res
.getDrawable(R.drawable.product_salmon),
"Dead or Alive by Tom Clancy with Grant Blackwood", 29.99));
catalog.add(new Product("Switch", res
.getDrawable(R.drawable.switchbook),
"Switch by Chip Heath and Dan Heath", 24.99));
catalog.add(new Product("Watchmen", res
.getDrawable(R.drawable.watchmen),
"Watchmen by Alan Moore and Dave Gibbons", 14.99));
}
}