0

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

activity.contextinval myDrawable = ContextCompat.getDrawable(activity.context, imageResId) ?: throw IllegalArgumentException("Cannot load drawable $imageResId")返回此错误:

未解决的参考:上下文

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

以下是一些相关代码:

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")
4

4 回答 4

2

尝试以下操作:

activity.resources.getDrawable(imageResId)

更新:getDrawbale() 已从 api 22 中删除,在这种情况下,您可以尝试以下操作:

ResourcesCompat.getDrawable(activity!!.resources, imageResId, null)
于 2020-03-04T09:30:45.933 回答
1
ResourcesCompat.getDrawable(requireActivity().resources, R.drawable.ic_baseline_arrow_back_24, null)
于 2020-09-16T06:12:32.063 回答
0

的原因Unresolved reference: context是没有这样的#getContext方法存在于活动中。

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

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

于 2020-03-04T09:49:54.513 回答
-1

如果您在活动中,您可以使用:

ContextCompat.getDrawable(activity, imageResId)
于 2020-03-04T09:33:07.590 回答