我使用Gradle在Android Studio上工作。
我的问题是Non-constant Fields in Case Labels。
当我在Android lib中使用Butter Knife时,我收到以下错误:
tutuFragment.java:31: error: attribute value must be constant
@InjectView(R.id.noContactTV)
有没有人遇到过同样的问题,如果有的话,有解决方案吗?
答案 0 :(得分:15)
根据https://github.com/JakeWharton/butterknife
图书馆项目
要在库中使用Butter Knife,请将插件添加到您的buildscript中:
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0' } }
然后将其应用到您的模块中:
apply plugin: 'com.android.library' apply plugin: 'com.jakewharton.butterknife'
现在确保在所有Butter Knife中使用R2而不是R. 注释
class ExampleActivity extends Activity { @BindView(R2.id.user) EditText username; @BindView(R2.id.pass) EditText password; ... }
现在可以在Android库中使用Butterknife
注入。
希望它会有所帮助
答案 1 :(得分:10)
Butterknife目前不支持图书馆项目,请参阅https://github.com/JakeWharton/butterknife/issues/100了解更多信息。
答案 2 :(得分:1)
如果你的片段在Android库项目中,请阅读:
https://github.com/excilys/androidannotations/wiki/Library-projects
答案 3 :(得分:0)
官方github页面有解决方案:https://github.com/JakeWharton/butterknife
但是当我遵从配置我的图书馆项目的步骤时,我遇到了一些问题, 例如NullPointerException,单击视图等时不会调用由@onClick annotition标记的函数。
然后我改变了一些事情,最后成功了。请参阅:http://blog.csdn.net/ytzys/article/details/53243438
答案 4 :(得分:0)
我遇到过同样的问题。每当我写作时,我都会收到此错误。
@BindView(R.id.pager) ViewPager pager;
或视图的任何其他类似语法。
导致此错误的原因是导入到我的java文件中的R文件来自不同的包。
现在问题是为什么导入的R文件来自不同的包?
这是因为我将我的项目用作另一个项目的库。在制作库的过程中,我给出了不同的包名。