ButtonKnife在library中引用“Attribute value must be constant”報錯解決
最近在搞專案元件化的事,按業務分成獨立的module,在release的時候就要把業務module設定成library,但是發現設定成library時候原先的buttonknife繫結view的程式碼全部標紅下劃線,提示“Attribute value must be constant”,這是因為library中R.id.xxx 取R中變數的時候並非是final型別,“duang”尼瑪。這是要把以前的@BInd全部改成findviewbyid嗎。嚇老子一跳,結果肯定是沒有啊。網上也有解決辦法,但是好像都寫得不全或者不清晰。下面來說說解決辦法,3步保你成功:
ButterKnife在8.2.1中支援在Library內部使用檢視注入,由於我的版本還是7.0的,所以趕緊升級版本。
1
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}
2 在appmodule和library中新增(注:只要用到都要新增)
apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'android-apt'
dependencies {
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
}
3 在library繫結view如下(用R2代替R):
@BindView(R2.tv_account) TextView tvAccount;
此處如果會提示“程式包R2不存在”,多rebuild幾遍就行了。
相關推薦
ButtonKnife在library中引用“Attribute value must be constant”報錯解決
最近在搞專案元件化的事,按業務分成獨立的module,在release的時候就要把業務module設定成library,但是發現設定成library時候原先的buttonknife繫結view的程式碼全部標紅下劃線,提示“Attribute value must
【日常踩坑】ButterKnife:Attribute value must be constant
Attribute value must be constant 在搜尋Attribute value must be constant後得到這樣的說明: Injection does not work in library projects 意為
解決butterknife 依賴庫使用的Attribute value must be constant問題
在我們使用android studio 通常會把常用的程式碼,新建成module在library中引入butterknife的依賴: compile ‘com.jakewharton:but
altium designer dxf檔案匯入到PCB中出現一片空白或匯入報錯解決辦法
這類現象出現的主要原因是,DXF裡面的很多元素,Altium中無法識別造成的,無論我們怎麼匯入都是無法匯入成功的,我們可以按照如下步驟進行操作: 這個時候我們可以在CAD中開啟這個DXF檔案,然後框選
java.sql.SQLException: The server time zone value '???ú±ê×??±??'的報錯解決方案
問題描述: 利用JDBC連線資料時,會報錯誤具:java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. Yo
WSDL控制檯中wsimport命令生成客戶端程式碼報錯解決方案
在使用webservice時,利用jdk自帶的wsimport.exe生成客戶端程式碼時發生如下錯誤: 正在解析 WSDL... [ERROR] Unexpected end of file from server 無法讀取 WSDL 文件: http://localhos
java中使用switch case報錯case expressions must be constant expressions
一、發現問題 private int CLICK_QUERY = 1; private int CLICK_RESET = 2; @Override public void onClick(View v) { int tag = (Integer) v.getTag(); &nb
Type of the default value for 'searches' prop must be a function 如何解決vue中報出的這種錯誤
https://google.com/#q=vue%2Frequire-valid-default-prop Type of the default value for 'searches' prop must be a function src/base/s
java中的switch使用 case expressions must be constant expressions,Duplicate case
java中的switch問題,有時報告case expressions must be constant expressions,原因是缺少final;另外如果報告:Duplicate case,則是switch中的case值重複,用Java寫時,不會像c一樣,case是什
ValueError: fill value must be in categories.
執行下面程式碼時報錯:ValueError: fill value must be in categories import pandas as pd; import numpy as np; df = pd.DataFrame({'a':[1, 2,
錯誤ValueError: malformed SHA512 hash (checksum must be exactly 86 chars)解決辦法
flask這個報錯多半是ORM建立數據表的時候,密碼列給的長度不足導致的。比如把password_hash = db.Column(db.String(64))改為password_hash = db.Column(db.String(120)然後重新建立表即可。原因:表沒有足夠空間放置加密後的數據,sha5
【Kotlin】spring boot項目中,在Idea下啟動,報錯@Configuration class 'BugsnagClient' may not be final.
post open conf png spa temp 技術 dea and 報錯如下: Exception encountered during context initialization - cancelling refresh attempt: org.spr
Android中引用sweet-alert-dialog以及遇到的問題解決
posit merger 不一致 failed sch sweet 一個 問題解決 alert 概述 sweet-alert-dialog是一個帶動畫效果的自定義對話框樣式,可以讓你的Android程序的對話框優美很多。GitHub地址 Android Studio中引用
解決JDBC中“The server time zone value '???ú±ê×??±??' is...”報錯(即MySQL時區錯誤問題)
最近寫jsp,經常遇到MySQL時區錯誤的問題 每次遇到都要找一下設定的程式碼,太麻煩了,就自己寫篇部落格記錄一下 首先解決這個報錯主要有兩種方法,第一是在寫連線的URL時寫上一個“&serverTimezone = GMT” 語句(如果需要用到GMT+8的時區,需要
使用jdbcTemplate.queryForRowSet()遇到UncategorizedSQLException:Invalid precision value. Cannot be less than zero解決辦法
某次在做專案時用到了spring2.5的jdbcTemplate.queryForRowSet()去連線Oracle 11g,執行時出現如下異常: org.springframework.jdbc.UncategorizedSQLException: PreparedSta
iOS專案中引用多個第三方庫引發衝突的解決方法
這個真蛋疼~~~~ 解決方法如下: iOS程式開發過程中引用多個第三方庫時會出現類名重疊,導致衝突,具體的衝突錯誤提示如下: duplicate symbol OBJC_IVAR$_AFHTTPSessionManager._requestSerializer in:
Eclipse中引用了lint工具,打包時報錯
Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead 出現該問題原因:由於Eclipse中引入了li
mybatis 中設定mysql自增主鍵報錯Incorrect integer value: '' for column 'class_id' at row 1
按道理自增主鍵這樣配置 <insert id="insertAlbum" useGeneratedKeys="true" keyProperty="classId"> insert into attachment_class VA
Ubuntu 14.04 samba提示bad talloc magic value - access after free報錯
sambaUbuntu 14.04 samba提示bad talloc magic value - access after free報錯原因:samba版本和libtalloc2版本不一致導致的解決:重裝下samba或libtalloc2(apt-get install samba或libtalloc2)本
已經設置utf8的mysql cmd中插入中文執行報錯解決方法
客戶 res img 說明 設置 -1 bsp 插入 gbk 說明cmd客戶端的字符集是gbk,結果集也要設置為gbk。 使用語句 set character_set_client=gbk; set character_set_results=gbk; 就