我使用 Gradle 在 Android Studio 上工作。
我的问题是Case Labels 中的非常量字段。
当我在 Android lib 中使用 Butter Knife 时,出现以下错误:
tutuFragment.java:31: error: attribute value must be constant
@InjectView(R.id.noContactTV)
有没有人遇到过同样的问题,如果有,有解决方案吗?
我使用 Gradle 在 Android Studio 上工作。
我的问题是Case Labels 中的非常量字段。
当我在 Android lib 中使用 Butter Knife 时,出现以下错误:
tutuFragment.java:31: error: attribute value must be constant
@InjectView(R.id.noContactTV)
有没有人遇到过同样的问题,如果有,有解决方案吗?
根据https://github.com/JakeWharton/butterknife
图书馆项目
要在库中使用 Butter Knife,请将插件添加到您的构建脚本中:
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; ... }
所以现在可以Butterknife
在 Android 库中使用注入。
希望它会有所帮助
Butterknife 目前不支持库项目,更多信息请参考https://github.com/JakeWharton/butterknife/issues/100。
如果您的 Fragment 在 Android 库项目中,请阅读以下内容:
https://github.com/excilys/androidannotations/wiki/Library-projects
我遇到过同样的问题。每当我写作时,我都会收到此错误。
@BindView(R.id.pager) ViewPager pager;
或任何其他类似的视图语法。
出现此错误的原因是导入到我的 java 文件中的 R 文件来自不同的包。
现在的问题是为什么导入的 R 文件来自不同的包?
这是因为我将我的项目用作另一个项目的库。在制作库时,我给了一个不同的包名。
官方github页面有解决方案:https ://github.com/JakeWharton/butterknife
但是当我按照步骤配置我的库项目时,我遇到了一些问题,例如 NullPointerException、@onClick 注释标记的函数在单击视图时没有被调用等。
然后我改变了一些东西,终于成功了。参考这个: http: //blog.csdn.net/ytzys/article/details/53243438