Error: Expected resource of type xxx [ResourceType]

運行環(huán)境:Android Studio 1.4

  gradle版本:2.10

  工程編譯沒有問題,并且能在模擬器和真機上正常運行,但是當(dāng)打包成Apk的時候,出現(xiàn)了

Error:Error:?Expected?resource?of?type?color?[ResourceType]

?這個錯誤,導(dǎo)致打包不成功。

    以下是出錯地方的代碼:

private static RadioButton createGroupTabItem(Context context,
????????????MemberType data) {
????????RadioButton rb = new RadioButton(context);
????????...
rb.setTextColor(context.getResources().getColorStateList(R.drawable.tab_text_checker_white_to_theme));
????????...
????????return rb;
????}

  其實也就是創(chuàng)建一個RadioButton,然后設(shè)置字體顏色的時候,出現(xiàn)了上述錯誤,最后在StackOverflow上找到了一個解決辦法:

  在build.gradle文件中增加一下信息,然后打包成功了:

android {
?lintOptions {
????disable "ResourceType"
??}
}

  問題雖然解決了,但是我并不知道原因,而且這么修改是否會導(dǎo)致一些其他位置的問題,這個就無法確認,因此我嘗試去了解。

  還是StackOverflow,傳送門:http://stackoverflow.com/questions/34293718/expected-resource-of-type-animator-resourcetype

  這哥們兒遇到的問題其實個我這個很類似,通過那個,我知道原因了,我把資源類型弄錯了,總的來說這是我的不規(guī)范編程導(dǎo)致的,怎么說呢,我上面是設(shè)置textcolor,那說明我應(yīng)該使用一個color資源,單色值的應(yīng)該來源于colors.xml中定義的,但是我上面是使用的一個colorstate,是一個自定義的selector,一個xml文件,這個時候我們應(yīng)該把這個文件放在res/color目錄中,而不是res/drawable目錄中,然后使用R.color.xxx去引用,這樣就沒問題了。詳見官方說明:https://developer.android.com/guide/topics/resources/available-resources.html?

  到此我們終于找到事情的原委了,然后我們說下為什么在build.gradle文件中添加上述配置之后就能打包成功呢,其實上述配置是禁用資源類型檢測,這樣在打包過程中就不會因為資源類型不匹配而提示錯誤了。

  看來還是自己基礎(chǔ)不過關(guān)啊。這里提醒一點,在Eclipse中,像上述操作,并不會出現(xiàn)這樣的問題,所以說啊,android studio開發(fā)跟eclipse開發(fā)在工程管理上,有很多不一樣的地方,我的另外一篇文章也有關(guān)于jar方面的不同。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容