【问题标题】:Android: java.lang.IllegalArgumentException: Unknown color error [duplicate]Android:java.lang.IllegalArgumentException:未知颜色错误[重复]
【发布时间】:2021-05-19 22:30:48
【问题描述】:

当我尝试构建项目时,会出现错误,并在主题名称中指出。指向这里:

 if (arrList[position].color != null){
            holder.itemView.cardView.setCardBackgroundColor(Color.parseColor(arrList[position].color))
        }else{
            holder.itemView.cardView.setCardBackgroundColor(Color.parseColor(R.color.ColorLightBlack.toString()))
        }

如果我删除写在“else”中的条件,项目启动时不会出错。尝试改变颜色,没有任何改变!

【问题讨论】:

  • 什么是arrList[position].color)R.color.ColorLightBlack

标签: java android kotlin colors


【解决方案1】:

this post我们可以看出你应该写

holder.itemView.cardView
    .setCardBackgroundColor(ContextCompat.getColor(getActivity(), R.color.ColorLightBlack))

您正在尝试使用 parseColor,它将十六进制字符串作为参数。但是调用 toString() 可能不会转换为十六进制。

【讨论】:

  • 谢谢!它帮助了我
【解决方案2】:

R.color.ColorLightBlack是Android系统分配的整数值。您正在尝试将此值传递给需要字符串的parseColor 方法。即使您在 R.color.ColorLightBlack 上使用 toString,该值仍然是整数,因此您会收到错误消息。

你可以这样更新代码:

if (arrList[position].color != null){
holder.itemView.cardView.setCardBackgroundColor(Color.parseColor(arrList[position].color)) }
else { 
holder.itemView.cardView.setCardBackgroundColor(R.color.ColorLightBlack)) 
} 

【讨论】:

  • 感谢您的帮助
猜你喜欢
  • 2012-01-03
  • 2017-01-04
  • 2015-03-08
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多