解析颜色时出现NumberFormatException

时间:2019-03-13 13:17:46

标签: android

我正在尝试将颜色从String解析为int。它在大多数情况下都有效,但是在某些特定情况下会抛出NumerFormatException

无法解析的颜色示例:

  • 003976
  • 631b4b

我用来解析颜色的代码:

  try {
      dialogView.findViewById(R.id.test_view).setBackgroundColor(Color.parseColor("#" + shop.getBackgroundColor()));
  } catch (Exception e) { 
      Log.e("test", e.getMessage());
  }

我得到的例外情况:

enter image description here

来自调试器:

enter image description here

这很奇怪,因为调试器显示String的计数等于8。在不同情况下,它显示计数等于7,并且解析正常。任何想法在这里有什么问题以及如何解决?

编辑

我发现从String方法返回的getBackgroundColor()'\uFEFF' 65279一样在开头还具有其他不可见字符。我将其删除,现在可以使用了。谢谢

2 个答案:

答案 0 :(得分:0)

shop类中的getBackgroundColor()方法是什么类型?似乎是长整数,而631b4b不是十进制长整数,而是十六进制。您可以使其返回String。

答案 1 :(得分:0)

尝试一下...

shop.getBackgroundColor()可能会带有空格。只需使用trim()将其删除。这样。

shop.getBackgroundColor().trim()

 try {
      dialogView.findViewById(R.id.test_view).setBackgroundColor(Color.parseColor("#" + shop.getBackgroundColor().trim()));
  } catch (Exception e) { 
     Log.e("test", e.getMessage());
  }

快乐的编码...