2015-01-04 81 views
1

當我嘗試通過setProgressbackground()方法來改變我的SwipeRefresh-進度的顏色我得到的錯誤:SwipeRefreshLayout setProgressBackgroundColor()給出了奇怪的異常

E/AndroidRuntime﹕ FATAL EXCEPTION: main 
android.content.res.Resources$NotFoundException: Resource ID #0xffffffff 
     at android.content.res.Resources.getValue(Resources.java:1026) 
     at android.content.res.Resources.getColor(Resources.java:756) 
     at android.support.v4.widget.CircleImageView.setBackgroundColor(CircleImageView.java:118) 
     at android.support.v4.widget.SwipeRefreshLayout.setProgressBackgroundColor(SwipeRefreshLayout.java:454) 

我調用該方法是這樣.setProgressBackgroundColor(getResources ().getColor(R.color.mycolor))。顏色存在於資源文件中,並在其他代碼中運行良好。

然後我看着SwipeRefreshLayout文件,發現是這樣的方法:

/** 
* Set the background color of the progress spinner disc. 
* 
* @param colorRes Resource id of the color. 
*/ 
public void setProgressBackgroundColor(int colorRes) { 
    mCircleView.setBackgroundColor(colorRes); 
    mProgress.setBackgroundColor(getResources().getColor(colorRes)); 
} 

和對我來說似乎很奇怪的是,它會調用.setBackgroundColor()一次只整數colorRes和另一次用getResources()。getColor(colorRes)。

我在做什麼錯?

+0

看看這個修復您的問題:HTTP://計算器。 com/questions/26820081/why-setprogressbackgroundcolor-can-not-resolve-error – 2015-01-07 14:13:25

回答

0

參數setBackgroundColor以十六進制形式呈現顏色,而不是資源ID

顏色與/res/colors.xml文件加載,可以被稱爲例如:

setBackgroundColor(getResources().getColor(R.color.red)); 

,用含有如下/res/values/colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="red">#FF0000</color> 
</resources> 
+0

這就是我通過調用getResources()。getColor(R.color.mycolor)其中mycolor是我在/ res/values中實現的顏色/color.xml – 2015-01-04 14:18:17

+0

只是pa在運行時發出R.color.mycolor給出錯誤 – 2015-01-04 14:18:45

+0

您是否已將正確的'R'導入顯示錯誤的類中?你想'com.yourapps.package.R'而不是'android.R' – 2015-01-04 14:21:44