国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

android - AS中Module中沒法使用Butterknife.有什么好的替代?

瀏覽:126日期:2024-09-07 11:29:25

問題描述

說是Module中的R文件下的id不是final的。然后Butterknife就不行。。。估計別的注解類型的也不好使吧。。。于是乎有什么辦法么。。

詳見:https://github.com/JakeWharton/butterknife/issues/100

以下是作者JakeWharton在14年12月的原話。。。

Yes this is not supported. This is a tradeoff between ease-of-use and what I tolerate as a sane API.

The only way to accomplish something like this is to allow string values like this:

@InjectView(name = 'content_frame') protected FrameLayoutcontentFrame; The downside’s to this are:

The downside’s to this are:

It’s not rename-safe or compile-safe (kind of). If you open the layout XML for this and do an IDE-backed rename operation it will not catch this string and update it. It also means you can (technically) compile the above code if there is no content_frame ID that exists. Now the compilation will eventually fail because the generated code will become invalid.

It’s hard to know what R class to reference in the generated code, especially when you take into consideration the fact that you can use references to IDs that exist in libraries that you are referencing.

It forces us to have defaults for both the value and name properties on each annotation which means you can write @InjectView Foo foo and Butter Knife will have to fail the builder rather than javac.

Because of these facts, I have chosen not to support library projects.

One way that this could potentially be solved is to use a Gradle plugin rather than an annotation processor. I don’t have the time to explore something like that for a few months though.

問題解答

回答1:

Android Studio Prettify

這個插件自動生成findViewById等內(nèi)容,你可以試試。 你說Butterknife不能用,應(yīng)該是你用錯了吧,你仔細(xì)看看是不是用錯了。

回答2:

module中好像也沒看到別的,還是直接使用findViewById吧

回答3:

現(xiàn)在基本不用butterknife了,直接封裝一個方法在BaseActivity或BaseFragment

//BaseActivitypublic <T extends View> T $(@IdRes int resId){ return (T)super.findViewById(resId);}//BaseFragmentpublic <T extends View> T $(View layoutView, @IdRes int resId){ return (T)layoutView.findViewById(resId);}//使用TextView tvName=$(R.id.tv_name);回答4:

這個也行,功能比較多https://github.com/excilys/androidannotations

回答5:

最好使用系統(tǒng)自帶的findviewyid來查找id,第三方的工具之間使用會存在沖突

回答6:

RoboGuice?或者android annotation?

回答7:

android - AS中Module中沒法使用Butterknife.有什么好的替代?

相關(guān)文章:
主站蜘蛛池模板: 特级毛片aaaa级毛片免费 | 亚洲涩涩精品专区 | 手机在线看片福利 | 欧美日本视频一区 | 高跟丝袜美女一级毛片 | 波多野结衣在线免费视频 | 91免费永久在线地址 | 久久视频在线观看免费 | 国产成人亚洲精品久久 | 99在线观看 | 男人天堂怡红院 | 亚洲天堂免费观看 | 午夜宅男在线永久免费观看网 | 亚洲精品国产一区二区三区在 | 一级aaaaaa毛片免费 | 欧美一区二区三区免费不卡 | 国产成人毛片亚洲精品不卡 | 日韩精品欧美激情国产一区 | 国产成人午夜福在线观看 | 日韩三级在线免费观看 | 日韩不卡一区二区三区 | 夜色综合| 久久久久国产成人精品亚洲午夜 | 精品欧美日韩一区二区三区 | 久久精品国产欧美成人 | 国内自拍网 | 欧美亚洲国产成人高清在线 | 男女国产视频 | 成人欧美一区二区三区视频 | 一级成人a毛片免费播放 | 国产日本三级欧美三级妇三级四 | 2019国产精品| 亚洲成aⅴ人片在线观 | 免费看a级肉片 | 一级做a毛片在线看 | 中文字幕三区 | 欧美一级毛片不卡免费观看 | 欧美在线精品一区二区三区 | 欧美成人观看 | 欧美在线不卡 | 丝袜美腿在线不卡视频播放 |