簡體   English   中英

解析顏色不再使用十六進制值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM