对于新的android API 22,getResources().getDrawable()现在已被弃用。现在最好的方法是只使用getDrawable()。

什么改变了?


当前回答

您可以使用

ContextCompat.getDrawable(getApplicationContext(),R.drawable.example);

这是我的工作

其他回答

您可以使用

ContextCompat.getDrawable(getApplicationContext(),R.drawable.example);

这是我的工作

getDrawable(int drawable)在API级别22中被弃用。有关参考,请参阅此链接。

现在,为了解决这个问题,我们必须通过一个新的构造器以及id,如:-

getDrawable(int id, Resources.Theme theme)

对于解决方案,请这样做:-

在Java中:-

ContextCompat.getDrawable(getActivity(), R.drawable.name);   

or

 imgProfile.setImageDrawable(getResources().getDrawable(R.drawable.img_prof, getApplicationContext().getTheme()));

在Kotlin:-

rel_week.background=ContextCompat.getDrawable(this.requireContext(), R.color.colorWhite)

or

 rel_day.background=resources.getDrawable(R.drawable.ic_home, context?.theme)

希望这对你有帮助。谢谢。

试试这个

ContextCompat.getDrawable(getActivity(), R.drawable.drawable_resource_name);

试试看:

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));
    }
}

对于一些即使在应用了这个线程的建议(我以前也是这样的)之后仍然需要解决这个问题的人,请在Application类上添加这行,onCreate()方法

AppCompatDelegate.setComptVectorFromResourcesEnabled(true)

正如这里和这里所建议的,有时需要从资源中访问向量,尤其是在处理菜单项等时