[英]Parsing color no longer working with hex values
這個很奇怪,我之前用過這個function。 但是它似乎已經停止工作,我不知道為什么。
我使用Color.parseColor
設置項目的背景顏色。 這是執行此操作的代碼:
imgItemImage.setBackgroundColor(Color.parseColor(cartItem.get("picture")));
我得到了這個例外:
java.lang.NumberFormatException:對於輸入字符串:“#837A67”
在 java.lang.Long.parseLong(Long.java:579)
在 android.graphics.Color.parseColor(Color.java:1386)
這似乎是一個正確的十六進制顏色,所以我不確定它為什么會導致這個異常。
有人有什么主意嗎?
正如您從Exception
中看到的那樣,問題在於從內部調用 Long.parseLong() 時Long.parseLong()
Color.parseColor()
。
此Exception
是由於向Long.parseLong()提供了錯誤的輸入,這是一個額外的字符#
,通常應該在內部調用Long.parseLong()
Color.parseColor()
刪除。
您的代碼拋出的Exception
可以在下面演示:
String str = "#837A67";
System.out.println(Long.parseLong(str, 16));
其中16
是十六進制的 RADIX。
但是試試這個:
String str = "837A67";
System.out.println(Long.parseLong(str, 16));
你會得到預期的結果。
這表明通過parseColor
傳遞的String
是不正確的,因為#
在Color.parseColor()
期間沒有被刪除,很可能是因為不同的字符被刪除了。
仔細檢查您傳遞給Color.parseColor()
的值,並確保#
之前沒有任何字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.