如何从片段中的属性引用中检索可绘制对象

How to retrieve drawable from attributes reference in a Fragment

有人可以确认从属性引用(从片段)检索可绘制对象的正确方法是什么吗?

activity.contextval myDrawable = ContextCompat.getDrawable(activity.context, imageResId) ?: throw IllegalArgumentException("Cannot load drawable $imageResId") returns 这个错误:

Unresolved reference: context

我不确定这里应该使用哪个上下文。

这里是一些相关的代码:

val typedValue = TypedValue()
activity!!.theme.resolveAttribute(R.attr.imgSearch, typedValue, true)
val imageResId = typedValue.resourceId
val myDrawable = ContextCompat.getDrawable(activity.context, imageResId) ?: throw IllegalArgumentException("Cannot load drawable $imageResId")

尝试以下操作:

activity.resources.getDrawable(imageResId)

更新:getDrawable() 已从 api 22 开始弃用,在这种情况下,您可以尝试以下操作:

ResourcesCompat.getDrawable(activity!!.resources, imageResId, null)

Unresolved reference: context 的原因是 activity 没有这样的 #getContext 方法。

由于在 ContextCompat.getDrawable(activity.context, imageResId)activity.context 会尝试调用 activity#getContext,因为该方法不存在,所以抛出此异常。

尝试将此语句更新为 ContextCompat.getDrawable(activity, imageResId),因为 activity 本身就是上下文的一个实例。

ResourcesCompat.getDrawable(requireActivity().resources, R.drawable.ic_baseline_arrow_back_24, null)